我遇到了一个非常不寻常的问题。如有必要,为了更好地了解全局,请参阅我的上一篇文章Unable to retrieve a sub-NodeList from a NodeList in Javascript。
好吧,现在可以了,但是当我尝试使用基本相同的方法解析不同的 XML 字符串时,生成的 NodeList 将不包含任何文本节点。而不是格式化的 XML,我将把我试图解析的字符串的一部分发布到 NodeList 中:
<clients><client><code>1111</code><crm>2222</crm><company><name>FOO</name><enterprise>BAR</enterprise><cnpj>XXX</cnpj></company></client></clients>
请注意,这些不是节点的实际值,但父节点客户端遵循这个结构(虽然它被删节了)。
因此,出于测试目的,我最终求助于以下代码来查看列表是否正确创建:
function parseClientsXML(xmlString, filter){
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var clients = xmlDoc.getElementsByTagName(filter);
for(var i = 0; i < clients.length; i++){
var client = clients[i].childNodes;
for (var j = 0; j < client.length; j++){
var node = client[j];
$('#div_clients').append("Node index: " + i + " - Type: " + node.nodeType + " - Name: " + node.nodeName + "<br>");
}
}
调用函数:
parseXML(theString, "clients");
我期望的结果是这样的:
Node index: 0 - Type: 1 - Name: client
Node index: 1 - Type: 1 - Name: code
Node index: 2 - Type: 3 - Name: #text
Node index: 3 - Type: 1 - Name: crm
Node index: 4 - Type: 3 - Name: #text
等等。使用从我的另一篇文章中的 XML 解析的字符串作为“theString”,它可以正常工作。但是这篇文章中字符串的输出是这样的:
Node index: 0 - Type: 1 - Name: client
Node index: 1 - Type: 1 - Name: code
Node index: 2 - Type: 1 - Name: crm
Node index: 3 - Type: 1 - Name: company
Node index: 4 - Type: 1 - Name: name
...
我整天都在研究这个问题,但找不到解决方案。输入字符串与我在上面发布的完全一样(嗯,不完全是,但很接近)。有任何想法吗?