node - jabón en el nodo está analizando json a XML incorrecto
strong soap js (1)
Usando el módulo Soap en Nodejs (a través de loopback-connector-soap), estoy tratando de convertir json a xml para mi solicitud de jabón, pero tengo algunos problemas ...
Lo que es:
<ns:UserDefinedFields>
<ns:UserDefinedField>
<ns:displayName>Campaign?</ns:displayName>
<ns:fieldValue>Yes</ns:fieldValue>
</ns:UserDefinedField>
</ns:UserDefinedFields>
<ns:UserDefinedFields>
<ns:UserDefinedField>
<ns:displayName>Anticipated Use</ns:displayName>
<ns:fieldValue>6</ns:fieldValue>
</ns:UserDefinedField>
Lo que debería ser:
<ns:UserDefinedFields>
<ns:UserDefinedField>
<base:displayName>Campaign?</base:displayName>
<base:fieldValue>Yes</base:fieldValue>
</ns:UserDefinedField>
<ns:UserDefinedField>
<base:displayName>Anticipated Use</base:displayName>
<base:fieldValue>6</base:fieldValue>
</ns:UserDefinedField>
</ns:UserDefinedFields>
- Debe ser solo uno
<ns:UserDefinedFields>
- Y debe ser
<base:fieldValue>
lugar de<ns:fieldValue>
¡Cualquier consejo sería muy útil! ¡Gracias!
El XML:
{
...
"UserDefinedFields": [
{
"displayName": "Campaign?",
"fieldValue": "Yes"
},
{
"displayName": "Anticipated Use",
"fieldValue": 6
}
]
...
}
El XSD:
...
<xs:element name="UserDefinedFields" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="UserDefinedField" type="base:UserDefinedFieldType" minOccurs="0" maxOccurs="15"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
Para tratar con el espacio de nombres, pase los espaciosNombre soap.createClient
opciones soap.createClient
.
{
"ignoredNamespaces": {
namespaces: [''ns'']
},
}
Y luego agregue el espacio de nombres manualmente. Es feo, pero funciona.
Para tratar con múltiples UserDefinedFields
, debería verse así:
{
. . .
DomainRegistration[''ns:UserDefinedFields''][''ns:UserDefinedField''][0] : {
"base:displayName": "Campaign?",
"base:fieldValue": "Yes"
},
DomainRegistration[''ns:UserDefinedFields''][''ns:UserDefinedField''][1] : {
"base:displayName": "Anticipated Use",
"base:fieldValue": 6
}
. . .
}
O para decirlo de manera más simple:
{
ouside: {
insideA: [
''one'',
''two'',
]
insideB: [
{''one'':''ONE''},
{''two'':''TWO''}
]
}
}
//will create:
<outside>
<insideA>
<one />
<two />
</insideA>
<insideB>
<one>ONE</one>
</insideB>
<insideB>
<two>TWO</two>
</insideB>
</outside>