gpt4 book ai didi

查询。递归解析 XML 子项。如何?

转载 作者:数据小太阳 更新时间:2023-10-29 02:09:15 24 4
gpt4 key购买 nike

我一直在努力寻找有关如何解析以下 XML 文档的示例。下面的示例显示了我正在查看的深度。

我想我需要以下内容:

<强>1。加载 XML 的函数。

$.get('getProfile.xml', null, function (data) {
// ...
}, 'xml');

<强>2。一种循环遍历根节点以查找子节点的方法。对于找到的每个子节点,遍历找到的子节点的子节点以寻找子节点的新子节点。如果没有找到,就简单地输出这个子节点中的内容。

<?xml version="1.0" encoding="utf-8"?>
<GetProfile>
<UserInfo>
<id>free2rhyme</id>
<name>jerry mcguire</name>
<age>29</age>
<sex>m</sex>
<location>salt lake city, utah</location>
<signup>00/00/0000</signup>
</UserInfo>
<Entry>
<id>13579</id>
<date>2011-01-24</date>
<time>9:34:21</time>
<title>my first jounal entry</title>
<body>&lt;![CDATA[i'm really excited to have signed up for myjournal.co.cc! Yes!!!]]&gt;</body>
<Comments>
<Comment>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<from>otheruser84</from>
<body>I am glad you really liked the site! Have fun!!</body>
</Comment>
<Comment>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<from>otheruser84</from>
<body>I am glad you really liked the site! Have fun!!</body>
</Comment>
<Comment>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<from>otheruser84</from>
<body>I am glad you really liked the site! Have fun!!</body>
</Comment>
</Comments>
</Entry>
<Stats>
<following>40</following>
<followers>57</followers>
<entries>158</entries>
<favorites>15</favorites>
</Stats>
<Preview>
<Entries>
<Entry>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<title>otheruser84</title>
</Entry>
<Entry>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<title>otheruser84</title>
</Entry>
<Entry>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<title>otheruser84</title>
</Entry>
<Entry>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<title>otheruser84</title>
</Entry>
<Entry>
<id>97531</id>
<date>2011-02-16</date>
<time>9:34:21</time>
<title>otheruser84</title>
</Entry>
</Entries>
</Preview>
</GetProfile>

<强>3。上面的示例有望阐明我正在尝试做的事情。

<强>4。这是一种返回节点的索引、名称和值的方法,但它不会检查可能也有自己的子节点的子节点。

var getProfile = $(data).find('GetProfile').each(function () {

$('*', this).each(function (index, event) {
alert('index=' + index + ' name=' + e.tagName + ' value=' + $(e).text());
});

});

最佳答案

This page提供一个递归遍历 XML DOM 的片段:

function traverse(tree) {
if (tree.hasChildNodes()) {
document.write('<ul><li>');
document.write('<b>' + tree.tagName + ' : </b>');
var nodes = tree.childNodes.length;
for (var i = 0; i < tree.childNodes.length; i++)
traverse(tree.childNodes(i));
document.write('</li></ul>');
} else document.write(tree.text);
}

另一种方法是使用 DOM 解析器(例如 window.DOMParserActiveXObject("Microsoft.XMLDOM"))来解析 XML 字符串:

if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "text/xml");
}
else { // Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(text);
}

查看此页面:http://www.w3schools.com/dom/dom_parser.asp .


编辑:

function traverse(tree) {
$(tree).contents().each(function() {
if (this.nodeType == 3) { // text node
// node value: $(this).text() or this.nodeValue
console.log('text node value: '+ $(this).text());

} else {
console.log('tag name: ' + this.nodeName);
traverse(this);
}
});
}

实际操作:http://jsfiddle.net/william/uKGHJ/1/ .

关于查询。递归解析 XML 子项。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com