在E4X中使用名称空间按属性筛选元素



我有一个这样的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="x-default"。

I tried to get it as

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

但是返回undefined。什么好主意吗?

您缺少名称空间。

  1. 你需要有一个默认的名称空间,就像你已经为product元素定义了一个名称空间一样。
  2. 您需要有一个xml命名空间,因为lang属性属于这个命名空间

下面是一些示例代码

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

相关内容

  • 没有找到相关文章

最新更新