1

我是 Jquery 的新手,正在努力学习。但我被这个问题困住了。

我有来自 WCF 服务的以下响应。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">      
<s:Header />
  <s:Body>
    <GetLabelDetailsResponse xmlns="http://tempuri.org/">
      <GetLabelDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/Rework"        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:ContainerDetails>
      <a:BarCodeStatus>4</a:BarCodeStatus>
      <a:BarCodeStatusDesc />
      <a:LabelGS1>011030310036099721336</a:LabelGS1>
      <a:LabelType>EA</a:LabelType>
      <a:NumberOfChildren>0</a:NumberOfChildren>
      <a:ParentGS1>012030310036099421511</a:ParentGS1>
      <a:ParentSerial>012030310036099421511</a:ParentSerial>
      <a:ParentType>CSE</a:ParentType>
      <a:ProductCode>R0010221130</a:ProductCode>
      <a:ProductDescription>R0010221130-H-688 MONOBUTYL ETHER</a:ProductDescription>
      <a:TypeName />
    </a:ContainerDetails>
  </GetLabelDetailsResult>
</GetLabelDetailsResponse>  </s:Body></s:Envelope>

我正在尝试解析 BarCodeStatus 标记的值。但我不知道如何获得这个价值。我的网页中有以下代码。这显示了所有节点的值,但是当我尝试找到 BarCodeStatus 节点时,我什么也没有得到(balnk 值)。

success: function (data) {
    $(data).find("GetLabelDetailsResponse").each(function () {
        alert($(this).find("GetLabelDetailsResult").text());
    });
}

有人可以指出我如何从响应中获取 BarCodeStatus 标签的值的正确方向吗?

提前致谢, 拉姆

4

1 回答 1

0

您需要转义XML 命名空间( a:& s:) 中的冒号。

例子:

var s = $('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header />  <s:Body>    <GetLabelDetailsResponse xmlns="http://tempuri.org/">      <GetLabelDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/Rework"        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">        <a:ContainerDetails>      <a:BarCodeStatus>4</a:BarCodeStatus>      <a:BarCodeStatusDesc />      <a:LabelGS1>011030310036099721336</a:LabelGS1>      <a:LabelType>EA</a:LabelType>      <a:NumberOfChildren>0</a:NumberOfChildren>      <a:ParentGS1>012030310036099421511</a:ParentGS1>      <a:ParentSerial>012030310036099421511</a:ParentSerial>      <a:ParentType>CSE</a:ParentType>      <a:ProductCode>R0010221130</a:ProductCode> <a:ProductDescription>R0010221130-H-688 MONOBUTYL ETHER</a:ProductDescription><a:TypeName /></a:ContainerDetails></GetLabelDetailsResult></GetLabelDetailsResponse>  </s:Body></s:Envelope>');

//Find by the Ordinal positon 
s.find("GetLabelDetailsResponse").each(function () {
    alert($(this).find("GetLabelDetailsResult").children().children().eq(0).text());
});

//Escape the namespaces
s.find("GetLabelDetailsResponse").each(function () {
    alert($(this).find("GetLabelDetailsResult > a\\:ContainerDetails > a\\:BarCodeStatus").text());
});
​

如果您需要更全面的 jquery 命名空间支持,请查看XML Namespace Selectors for jQuery

于 2012-07-06T22:05:35.410 回答