【问题标题】:How do I parse this XML in jQuery that store values in attributes only?如何在 jQuery 中解析仅在属性中存储值的 XML?
【发布时间】:2012-10-03 23:02:58
【问题描述】:

我通过 $.post() 调用了这个 XML,这是返回值:

<processResponse xmlns:client="http://xmlns...." xmlns="http://xmlns..." xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <ns2:ProcessResult xmlns:ns2="http://xmlns...">
      <ns2:StatusCode>SUCCESS</ns2:StatusCode>
      <ns2:StatusMessages>
         <ns2:StatusMessage>
            <ns2:Code>0</ns2:Code>
            <ns2:Message>Success</ns2:Message>
         </ns2:StatusMessage>
      </ns2:StatusMessages>
   </ns2:ProcessResult>
   <premises>
      <ns3:cwsPremise xmlns:ns3="http://xmlns..">
         <ns3:cwsPremiseService>
            <ns3:cwsPremiseHeader PremiseID="5855654654"/>
            <ns3:cwsPremiseDetails PremiseID="5855654654" PremiseType="BBBB" Address="3892 A street" City="PA" Postal="96456" PremiseDataArea="PB" PremiseInfo="b55" District="a333" IsMultiple="N" AllowSelfService="Y" NeedAppointment="N"/>
         </ns3:cwsPremiseService>
      </ns3:cwsPremise>
      <ns3:cwsPremise xmlns:ns3="http://xmlns...">
         <ns3:cwsPremiseService>
            <ns3:cwsPremiseHeader PremiseID="99565423587"/>
            <ns3:cwsPremiseDetails PremiseID="99565423587" PremiseType="AAAA" Address="123 Main street" City="SC" Postal="98652" PremiseDataArea="AE" PremiseInfo="K876" District="b999" IsMultiple="N" AllowSelfService="Y" NeedAppointment="N"/>
         </ns3:cwsPremiseService>
      </ns3:cwsPremise>
   </premises>
</processResponse>

如何解析&lt;ns3:cwsPremiseDetails PremiseID="5855654654" PremiseType="BBBB" Address="3892 A street" City="PA" Postal="96456" PremiseDataArea="PB" PremiseInfo="b55" District="a333" IsMultiple="N" AllowSelfService="Y" NeedAppointment="N"/&gt;中的PremiseID、PremiseType、Address、Postal、PremiseDataArea、PremiseInfo、District等属性?

这是我的尝试:

$.post(url, function(xml) {

   var $PremiseID = $(xml).find('cwsPremiseDetails').attr('PremiseID').text();

   console.log($PremiseID);
   // output: nothing

});

【问题讨论】:

  • 检查控制台是否有错误,attr() 也会返回一个字符串。
  • 不错,但它返回未定义。

标签: jquery xml xml-parsing


【解决方案1】:

JQuery::attr() 返回一个字符串,而不是一个 jQuery 对象。尝试不使用 .text() 调用。

var $PremiseID = $(xml).find('cwsPremiseDetails').attr('PremiseID');

【讨论】:

    【解决方案2】:

    先尝试解析xml,如果你没有将dataType指定为xml,它不会返回一个XMLDocument,而只是一个字符串

    $.post(url, function(xml) {    
       var $PremiseID = $($.parseXML(xml)).find('cwsPremiseDetails').attr('PremiseID');    
       console.log($PremiseID);    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2017-06-06
      • 2012-06-29
      相关资源
      最近更新 更多