2
  1. 如何将该实例转换为 XML?

我正在使用 ExtJs 4.2。我有一个 ExtJs 模型的实例。

  1. 如何将其转换为 XML?

我有一个匿名 JavaScript 对象(有几个属性)。

我不确定以上两者的答案是否相同。XML 将作为正文发送到针对第三方 Web 服务的 POST 操作。

4

3 回答 3

6

在 JavaScript 中将 JSON 转换为 XML 是一种亵渎!

但如果我必须这样做,我会使用: http ://code.google.com/p/x2js/

于 2013-11-05T05:28:03.317 回答
3

我自己没有使用过这个,但对于任何使用前端/后端不可知论方法的人来说,这似乎是一个很好的解决方案。

https://github.com/michaelkourlas/node-js2xmlparser

于 2014-02-13T15:52:29.287 回答
2

我编写了以下函数来完成这项工作。当对象内的集合(数组)以“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 ......

于 2018-02-24T20:29:18.103 回答