0

これが標準に準拠していないことは理解していますが、パートナーは次のように、タグにスペースを含む XML をアプリに渡しています。

<RESPONSE>
  <XYZZYS>
    <XYZZY TAG="INFO">123abc</FIELD>
    <XYZZY TAG="MOAR_INFO">123456abcdef</FIELD>
    <XYZZY TAG="EVEN_MOAR_INFO">1</FIELD>

通常、getElementsByTagName("*") を介して XML をオブジェクトにロードし、item(index).nodeName でタグ名を取得します。問題は、スペースがあるはずがないため、item(index).nodeName が単に XYZZY になってしまうことです。それぞれが XYZZY で始まっているので、これはもちろん問題です。

  • キックのために、item(index).nodeName の "XYZZY " を replace() しようとしましたが、予想どおり、これにより 500 エラーが発生しました。
  • ResponseXML.preserveWhiteSpace は役に立ちません。
  • XML を文字列として操作して置換を行うことを考えましたが、それを MSXML オブジェクトに読み込めるかどうかわかりません...そして、少し不必要に複雑に思えます...
  • ...単純なテキスト文字列の解析も同様です。

私が見つけられなかった簡単な解決策はありますか? リソースへのリンクは大歓迎です!

4

1 に答える 1

0

AnthonyWJonesからの正しい方向へのポインターの後のこの StackOverflow questionに基づいて、これを解析する適切な方法を次に示します。

Set oXML = Server.CreateObject("MSXML2.DomDocument.6.0") 'creating the parser object
oXML.LoadXML(responseXML.responseText) 'Loading the XML from the response

For Each oNode In oXML.SelectNodes("/RESPONSE/XYZZYS/XYZZY")
  sKey = oNode.GetAttribute("KEY")
  sValue = oNode.Text
  'Printing for proof of retrieval.
  response.write("<br>sKey: " & sKey)
  response.write(" sValue: " & sValue)
Next

Set oXML = Nothing

リンクされた質問から単にコピーし、必要に応じて編集したことに注意してください。

于 2012-06-26T20:34:41.743 に答える