2012-08-03 27 views
1

我一直在試圖從以下XML屬性之一,從XML屬性,未能獲得一個asp文件

<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文件中的變量。請建議我熱得到。

回答

0

這樣做有兩種方式。

您可以手動拆分字符串並手動解析它,或者,您可以使用第三方XML解析器,如Msxml2.DOMDocument.6.0 - 我會推薦後者。

首先,你需要來準備getAtt節點與相關的父節點等(需要主要的是根節點)一個基本的XML文檔,然後在MSXML2打開XML文檔。一旦打開,你可以設置根和循環內的每個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 
%> 
+0

感謝您的回答...它運作良好... – user1495475 2012-08-03 13:15:23

+0

爲什麼'.Attributes.getNamedItem( 「T」)Text',而不是更簡單和更標準。 '.getAttribute( 「T」)'? – AnthonyWJones 2012-08-05 06:42:12

+0

@AnthonyWJones:我試過了,它沒有工作。 – user1495475 2012-08-06 07:04:02