2008-09-18 16 views
5

Soy nuevo en asp y tengo una fecha límite en los próximos días. recibo el siguiente xml desde dentro de una respuesta de servicio web.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>"); 

¿Cómo puedo analizar este xml en los atributos de asp?

Cualquier ayuda es muy apreciada

Gracias Damien

En más análisis, algunas cosas jabón también se devuelve como respuesta aboce es de una llamada de servicio web. ¿Todavía puedo usar el código de Lucas a continuación?

Respuesta

9

Necesita leer sobre el analizador MSXML. Aquí hay un enlace a un buen ejemplo todo en uno http://oreilly.com/pub/h/466

Algunas lecturas en XPath también ayudarán. Puede obtener toda la información que necesita en MSDN.

el robo de los códigos de Luke excelente respuesta para fines de agregación:

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

No entiendo ... ¿nunca haces nada con sValue ?? – JoJo

0

usted podría intentar cargar el XML en el objeto XmlDocument y luego analizarlo usando métodos es.

6

Por ASP ¿Supongo que quiere decir Classic ASP? Pruebe:

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 

El código anterior asume que tiene su XML en una variable llamada sXML. Si consume esto a través de una solicitud ServerXMLHttp, debería poder usar la propiedad ResponseXML de su objeto en lugar de oXML arriba y omitir el paso LoadXML por completo.