0

我有一个这样的 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" 的名称。

我试图把它当作

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

但它返回我未定义。有任何想法吗?

4

1 回答 1

0

您缺少名称空间。

  1. 您需要有一个默认名称空间,因为您已经为产品元素定义了一个名称空间。
  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");
于 2016-06-28T14:24:59.980 回答