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”,但可以预见的是,这会产生 500 错误。
  • ResponseXML.preserveWhiteSpace 没有帮助。
  • 我考虑过将 XML 操作为字符串来进行替换,但不确定是否可以将其加载回 MSXML 对象中......而且它似乎有点不必要地复杂......
  • ...就像简单的文本字符串解析一样。

有没有我一直找不到的简单解决方案?非常感谢资源链接!

4

1 回答 1

0

根据AnthonyWJones指向正确方向的指针后的这个 StackOverflow 问题,这里是解析这个的适当方法:

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 回答