Мне нужно отправить XML-запрос в API для моего проекта.Но по соображениям безопасности я не могу кодировать прямой xml в моей программе.Поэтому я решил использовать jsonix для маршалинга JSON в xml и разархивировать ответ на запрос.Но у меня есть некоторые проблемы.
Вот мой xml:
<?xml version = '1.0' encoding='UTF-8'?>
<api>
<authentication>
<login>MyLogin</login>
<password>MyPassword</password>
</authentication>
<command>
<myfunction>
<name>test</name>
</myfunction>
</command>
</api>
С этим я сгенерировал сопоставления с модулем компилятора схемы jsonix:
var Search_Module_Factory = function () {
var Search = {
name: "Search",
typeInfos: [{
localName: "Api.Command",
typeName: null,
propertyInfos: [{
name: "myFunction",
required: true,
elementName: {
localPart: "myfunction"
},
typeInfo: ".Api.Command.MyFunction"
}]
}, {
localName: "Api.Authentication",
typeName: null,
propertyInfos: [{
name: "login",
required: true,
elementName: {
localPart: "login"
}
}, {
name: "password",
required: true,
elementName: {
localPart: "password"
}
}]
}, {
localName: "Api.Command.MyFunction",
typeName: null,
propertyInfos: [{
name: "name",
required: true,
elementName: {
localPart: "name"
}
}]
}, {
localName: "Api",
typeName: null,
propertyInfos: [{
name: "authentication",
required: true,
elementName: {
localPart: "authentication"
},
typeInfo: ".Api.Authentication"
}, {
name: "command",
required: true,
elementName: {
localPart: "command"
},
typeInfo: ".Api.Command"
}]
}],
elementInfos: [{
typeInfo: ".Api",
elementName: {
localPart: "api"
}
}]
};
return {
Search: Search
};
};
if (typeof define === "function" && define.amd) {
define([], Search_Module_Factory);
}
else {
var Search_Module = Search_Module_Factory();
if (typeof module !== "undefined" && module.exports) {
module.exports.Search = Search_Module.Search;
}
else {
var Search = Search_Module.Search;
}
}
В моем основном коде я выполняю запрос xml следующим образом:
var Search = require("./mappings/Search").Search;
var context = new Jsonix.Context([ Search]);
var marshaller = context.createMarshaller();
var originalJS = {
"api": {
"authentication": {
"login" :"mylogin",
"password": "mypassword",
},
"command":{
"myfunction":{
"name": "test"
}
},
}
};
var marshalledXML = marshaller.marshalString(originalJS);
console.log(marshalledXML);
И в console.log () вместо того, чтобы показать мне что-то вроде этого, вот результат, который я хочу:
<api><authentication><login>mylogin</login><password>mypassword</password></authentication><command><myfunction><name>test</name></myfunction></command></api>
Возвращаетсячто-то вроде этого:
<api><authentication><login>mylogin</login><password>mypassword</password></authentication><command/></api>
Команда tag всегда пуста, и я не понимаю, что я делаю неправильно.Спасибо за вашу помощь