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 に答える