0

基本上我有一个 xml 文档,我对文档的唯一了解是属性名称。

鉴于该信息,我必须找出该属性名称是否存在,如果确实存在,我需要知道该属性值。

例如:

<xmlroot>
  <ping zipcode="94588" appincome = "1750" ssn="987654321" sourceid="XX9999" sourcepw="ioalot">
  <status statuscode="Success" statusdescription="" sessionid="1234" price="12.50"> 
  </status>
</ping>
</xmlroot>

我有名称 appincome 和 sourceid。价值观是什么?

此外,如果文档中有两个 appincome 属性名称,我也需要知道这一点,但我不需要它们的值,只要存在一个以上的匹配项即可。

4

1 回答 1

3

正则表达式可能不是最好的工具,尤其是当您的 JS 运行在支持 XPath 的相当现代的浏览器中时。这个正则表达式应该可以工作,但如果您没有严格控制文档的内容,请注意误报:

var match, rx = /\b(appincome|sourceid)\s*=\s*"([^"]*)"/g;

while (match = rx.exec(xml)) {
    // match[1] is the name
    // match[2] is the value

    // this loop executes once for each instance of each attribute
}

或者,试试这个 XPath,它不会产生误报:

var node, nodes = xmldoc.evaluate("//@appincome|//@sourceid", xmldoc, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

while (node = nodes.iterateNext()) {
    // node.nodeName is the name
    // node.nodeValue is the value

    // this loop executes once for each instance of each attribute
}
于 2009-04-01T22:08:25.040 回答