- 如何将该实例转换为 XML?
我正在使用 ExtJs 4.2。我有一个 ExtJs 模型的实例。
- 如何将其转换为 XML?
我有一个匿名 JavaScript 对象(有几个属性)。
我不确定以上两者的答案是否相同。XML 将作为正文发送到针对第三方 Web 服务的 POST 操作。
我正在使用 ExtJs 4.2。我有一个 ExtJs 模型的实例。
我有一个匿名 JavaScript 对象(有几个属性)。
我不确定以上两者的答案是否相同。XML 将作为正文发送到针对第三方 Web 服务的 POST 操作。
在 JavaScript 中将 JSON 转换为 XML 是一种亵渎!
但如果我必须这样做,我会使用: http ://code.google.com/p/x2js/
我自己没有使用过这个,但对于任何使用前端/后端不可知论方法的人来说,这似乎是一个很好的解决方案。
我编写了以下函数来完成这项工作。当对象内的集合(数组)以“s”后缀(作为其内容的复数形式)命名时,效果很好。
function serializeNestedNodeXML(xmlDoc, parentNode, newNodeName, obj) {
if (Array.isArray(obj)) {
var xmlArrayNode = xmlDoc.createElement(newNodeName);
parentNode.appendChild(xmlArrayNode);
obj.forEach(function (e) {
serializeNestedNodeXML(xmlDoc, xmlArrayNode, newNodeName.substring(0, newNodeName.length - 1), e)
});
return; // Do not process array properties
} else if (obj) {
var objType = typeof obj;
switch (objType) {
case 'string': case 'number': case 'boolean':
parentNode.setAttribute(newNodeName, obj)
break;
case 'object':
var xmlProp = xmlDoc.createElement(newNodeName);
parentNode.appendChild(xmlProp);
for (var prop in obj) {
serializeNestedNodeXML(xmlDoc, xmlProp, prop, obj[prop]);
}
break;
}
}
}
我以这种方式调用它(作为序列化类本身的函数):
this.serializeToXML = function () {
var xmlDoc = document.implementation.createDocument(null, "YourXMLRootNodeName", null);
serializeNestedNodeXML(xmlDoc, xmlDoc.documentElement, 'YourSerializedClassName', this);
var serializer = new XMLSerializer();
return serializer.serializeToString(xmlDoc);
}
但一个小时后,我转向 JSON ......