无法从asp文件中的xml获取属性

时间:2012-08-03 11:11:00

标签: asp-classic

我一直试图从以下xml中获取其中一个属性,

<getAtt MapReady="0" QueryTime="0" t="17" tt="15" pcheck="1" Startval="1" AutoNextStres="171" TC="171" q=+(A%3a(64))+AND+C%3a0+AND+((((BODY%3asujit)+OR+(BODY%3asujit*))+AND++(+(ICAL3%3a1+)+AND+(+(ICAL4%3a1+)+OR+(ICAL4%3a3+)+OR+(ICAL4%3a6+)++)++)))&amp;start=1&amp;rows=40" LogID="1664" ErrorCode=""></<getAtt>

从指定的xml,我必须得到“t”属性。这个xml保存在一个asp文件的变量中。请建议我热门。

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。

您可以手动拆分字符串并手动解析它,或者,您可以使用第三方XML解析器,例如Msxml2.DOMDocument.6.0 - 我会推荐后者。

首先,您需要将getAtt节点准备为具有相关父节点等的基本XML文档(您需要的主要内容是根节点),然后在MSXML2中打开该XML文档。打开后,您可以设置root并循环遍历每个getAtt节点。

以下是一个例子:

<%
    ''#### Define the XML to parse
    dim TestXML, oXML, oNode, sValue 
    TestXML = TestXML & "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf
    TestXML = TestXML & "<wrapperNode>" & vbcrlf
    TestXML = TestXML & "<getAtt MapReady=""0"" QueryTime=""0"" t=""17"" tt=""15"" pcheck=""1"" Startval=""1""></getAtt>" & vbcrlf
    TestXML = TestXML & "</wrapperNode>" & vbcrlf

    ''#### Ready the XML Parser
    Set oXML = Server.CreateObject("Msxml2.DOMDocument.6.0")

    ''#### Load the XML
    oXML.LoadXML(TestXML)

    ''#### Set the root (so we can easily get a collection of nodes)
    Set oRoot = oXML.selectSingleNode("//wrapperNode")

    ''#### Loop through each node and echo out the value of the "t" attribute
    For Each oNode In oRoot.childNodes
      response.Write oNode.Attributes.getNamedItem("t").Text
    Next 

    ''#### Cleanup
    Set oXML = Nothing 
%>