在E4X中使用名称空间的属性过滤元素

时间:2016-06-28 12:01:02

标签: xml e4x demandware

我有这样的XML:

<product xmlns="http://www.example-schame.org" product-id="5555555">
    <display-name xml:lang="x-default">Default name</display-name>
    <display-name xml:lang="en-GB">English Name</display-name>
    <display-name xml:lang="it-IT">Italian name</display-name>
</product>

我想获取默认名称,例如这个属性为xml:lang =&#34; x-default&#34;。

我试图将其作为

var name = Product["display-name"].(@["xml:lang"] == "x-default");

但它返回我未定义。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您缺少名称空间。

  1. 您需要具有默认命名空间,因为您已为产品元素定义了一个。
  2. 您需要拥有一个xml命名空间,因为lang属性属于此命名空间
  3. 以下是一些示例代码

    var product = <product xmlns="http://www.example-schame.org" product-id="5555555">
        <display-name xml:lang="x-default">Default name</display-name>
        <display-name xml:lang="en-GB">English Name</display-name>
        <display-name xml:lang="it-IT">Italian name</display-name>
    </product>;
    
    default xml namespace = product.namespace();
    var xmlns = new Namespace("xml", "http://www.w3.org/XML/1998/namespace");
    var name = product["display-name"].(@xmlns::lang == "x-default");