2008-09-18 54 views
5

我是asp的新手,在接下来的几天内会有一个截止日期。 我从Web服务响应中收到以下xml。Asp XML解析

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>"); 

如何解析这个XML到ASP属性?

任何帮助是极大的赞赏

感谢 达明

在更多的分析,也返回了一些肥皂的东西作为aboce响应来自Web服务调用。我仍然可以使用下面的lukes代码吗?

回答

9

您需要阅读有关MSXML分析器的内容。这里是一个很好的一体化例子的链接http://oreilly.com/pub/h/466

一些在XPath上的阅读也会有帮助。你可以在MSDN中获得你需要的所有信息。

盗窃Luke优秀答复代码聚集的目的:

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

我不明白..你从来不用sValue做什么? – JoJo 2012-09-05 15:28:41

0

你可以尝试加载XML到XmlDocument的对象,然后使用它的方法解析它。

6

通过ASP我假设你的意思是经典的ASP?试试:

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 

上面的代码假设你有你的XML在一个名为sXML的变量。如果您通过ServerXMLHttp请求来使用它,则应该能够使用对象的ResponseXML属性代替上述的oXML,并完全跳过LoadXML步骤。