2008-09-18 25 views
5

Tôi mới tham gia và có thời hạn trong vài ngày tới. tôi nhận được xml sau từ trong phản hồi webservice.Asp XML Parsing

print("<?xml version="1.0" encoding="UTF-8"?> 
<user_data> 
<execution_status>0</execution_status> 
<row_count>1</row_count> 
<txn_id>stuetd678</txn_id> 
<person_info> 
    <attribute name="firstname">john</attribute> 
    <attribute name="lastname">doe</attribute> 
    <attribute name="emailaddress">[email protected]</attribute> 
</person_info> 
</user_data>"); 

Làm cách nào để phân tích cú pháp này thành thuộc tính asp?

Any help is appreciated rất

Cảm ơn Damien

On phân tích nhiều hơn, một số nội dung xà phòng cũng được trả về như là phản ứng aboce là từ một cuộc gọi dịch vụ web. tôi vẫn có thể sử dụng mã lukes dưới đây?

Trả lời

9

Bạn cần đọc về trình phân tích cú pháp MSXML. Đây là liên kết đến một ví dụ tất cả trong một tốt http://oreilly.com/pub/h/466

Một số đọc trên XPath cũng sẽ trợ giúp. Bạn có thể nhận được tất cả thông tin bạn cần trong MSDN.

Trộm cắp mã từ Luke trả lời tuyệt vời cho mục đích tập hợp:

Dim oXML, oNode, sKey, sValue 

Set oXML = Server.CreateObject("MSXML2.DomDocument.6.0") 'creating the parser object 
oXML.LoadXML(sXML) 'loading the XML from the string 

For Each oNode In oXML.SelectNodes("/user_data/person_info/attribute") 
    sKey = oNode.GetAttribute("name") 
    sValue = oNode.Text 
    Select Case sKey 
    Case "execution_status" 
    ... 'do something with the tag value 
    Case else 
    ... 'unknown tag 
    End Select 
Next 

Set oXML = Nothing 
+0

Tôi không hiểu .. bạn không bao giờ làm bất cứ điều gì với sValue ?? – JoJo

0

Bạn có thể thử tải xml vào đối tượng XmlDocument và sau đó phân tích nó sử dụng đó là phương pháp.

6

Bởi ASP, giả sử bạn có nghĩa là ASP cổ điển? Hãy thử:

Dim oXML, oNode, sKey, sValue 

Set oXML = Server.CreateObject("MSXML2.DomDocument.4.0") 
oXML.LoadXML(sXML) 

For Each oNode In oXML.SelectNodes("/user_data/person_info/attribute") 
    sKey = oNode.GetAttribute("name") 
    sValue = oNode.Text 
    ' Do something with these values here 
Next 

Set oXML = Nothing 

Mã trên giả sử bạn có XML trong biến được gọi là sXML. Nếu bạn đang tiêu thụ thông qua một yêu cầu ServerXMLHttp, bạn sẽ có thể sử dụng thuộc tính ResponseXML của đối tượng của bạn thay cho oXML ở trên và bỏ qua bước LoadXML hoàn toàn.