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 という名前があります。値は何ですか?

また、ドキュメントに 2 つの 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 に答える