【问题标题】:Parse XML tag With Space in ASP Classic在 ASP Classic 中使用空格解析 XML 标记
【发布时间】:2012-06-25 16:55:45
【问题描述】:

我知道这不符合标准,但是合作伙伴正在将 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 对象中……而且看起来有点不必要的复杂……
  • ...就像简单的文本字符串解析一样。

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

【问题讨论】:

  • 您可能需要阅读一些非常基本的 XML,因为您显然不了解诸如 attributes 之类的一些基础知识,这是一个很好的起点:w3schools.com/xml/default.asp .
  • 谢谢,这有帮助 - 我刚刚做了一些探索,现在我将“属性”作为关键字并找到了一些可能有用的东西,包括 another StackOverflow question。解决后将添加详细信息。

标签: xml asp-classic xml-parsing space


【解决方案1】:

基于从AnthonyWJones 指向正确方向的指针之后的this 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2013-11-28
    • 2010-09-10
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多