在ASP Classic中使用Space分析XML标记

时间:2012-06-25 16:55:46

标签: xml asp-classic xml-parsing space

我理解这不符合标准,但是合作伙伴将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开始的。

  • 对于踢,我试图替换()项目(索引).nodeName中的“XYZZY”,但可以预见这会产生500错误。
  • ResponseXML.preserveWhiteSpace没有帮助。
  • 我已经考虑过将XML作为一个字符串来操作替换,但我不确定是否可以将它加载回MSXML对象......而且它似乎有点不必要地复杂......
  • ...和简单的文本字符串解析一样。

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

1 个答案:

答案 0 :(得分:0)

this StackOverflow question的正确方向指针之后基于AnthonyWJones,这是解析此问题的合适方法:

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

请注意,我只是从链接的问题中复制并根据需要进行编辑。