将XML数据读入Javascript节点

时间:2015-04-29 02:14:58

标签: javascript xml node.js

我正在尝试创建自己的XML到JSON转换器。一个问题,我似乎无法弄清楚如何读取XML数据。下面的代码是尝试从字符串中读取它的失败。有没有办法从文件中读取它作为xml?

  function xmlToJson(xml) {

        // Create the return object
        var obj = {};

        debugger;
        if (xml.nodeType == 1) { // element
            // do attributes
            if (xml.attributes.length > 0) {
            obj["@attributes"] = {};
                for (var j = 0; j < xml.attributes.length; j++) {
                    var attribute = xml.attributes.item(j);
                    obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
                }
            }
        } else if (xml.nodeType == 3) { // text
            obj = xml.nodeValue;
        }

        return obj;
    };



    var xml = "<subject><story><unique_id>665c43</unique_id><story_url>http://this ismystory.com</story_url></story></subject>";


xmlToJson(xml);

2 个答案:

答案 0 :(得分:0)

在调用此函数之前,请添加此行。

def my_reduce(obj1, obj2):
    if not isinstance(obj1,dict):
        return reduce(my_reduce,[{},obj1,obj2])
    try:
        obj1[obj2[0]] = max(obj1[obj2[0]][0],obj2[1]),min(obj1[obj2[0]][1],obj2[2])
    except KeyError:
        obj1[obj2[0]] = obj2[1:]
    return obj1

my_list = [('dog',12,2), ('cat',15,1), ('dog',11,1), ('cat',15,2), ('dog',10,3), ('cat',16,3)]
print reduce(my_reduce,my_list)

注意:您可能必须使用变量名称。 无论哪种方式,要求是必须将字符串转换为var xml = jQuery.parseXML(xml);

看看是否能解决这个问题。

答案 1 :(得分:0)

如果您不想使用jQuery,也许可以尝试xml2js。

以下是xml2js github

的示例
var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
    console.dir(result);
});