0

给定大型 xml 文件中的以下 XML 部分:

<item id="C3DD6846593" >
    <name xml:lang="fr">Atlantique</name>
    <name xml:lang="en">Atlantic </name>
</item>

我正在尝试根据节点的属性在 Linq 中加载一个对象。这是我在代码中尝试做的事情。

public class MyList
    {
        public string ID {get;set;}

        public string EnName {get;set;}

        public string FrName {get;set;}

        public MyList() { }
    }

......稍后在代码中

  AgencyList = (from x in rawSrc.Descendants("item")                          
                                select new MyList{
                                    ID = x.Attribute("id").Value
                                    EnName = x.XPathSelectElement("\\name[@lang='en']").Value,
                                    FrName =x.XPathSelectElement("\\name[@lang='fr']").Value
                                }).ToList();

我得到“'\name[@lang='en']' 的令牌无效。” 作为错误。还有另一种方法可以解决这个问题吗?

4

1 回答 1

0

您需要使用普通斜杠而不是反斜杠。此外,您需要添加属性的命名空间并传入一个实例IXmlNamespaceResolver

EnName = x.XPathSelectElement("//name[@xml:lang='en']", ns).Value,
FrName = x.XPathSelectElement("//name[@xml:lang='fr']", ns).Value
于 2012-09-20T14:40:59.617 回答