0

次のような XDocument に XML をロードしました。

<MyXML xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyApp.Client.Main.GUI.Report">
  <Wrapper xmlns:d2p1="http://schemas.datacontract.org/2004/07/MyApp.Business.Entity">
    <d2p1:_MultipelAttributId>156</d2p1:_MultipelAttributId>
  </Wrapper>
</MyXML>

今、私は _MultipelAttributId の値を取得する必要がありますが、これを述べるとき:

XElement element = (from cml2 in doc.Descendants("d2p1:_MultipelAttributId") select cml2).FirstOrDefault();

「:」について例外が発生しますか?

では、どうすれば値を取得できますか?

4

3 に答える 3

3
XNamespace ns = "http://schemas.datacontract.org/2004/07/MyApp.Business.Entity"; 

var element = xDoc.Descendants(ns + "_MultipelAttributId").FirstOrDefault();
于 2012-10-09T10:19:10.547 に答える
1

照会している要素名が正しくありません。これを試して:

XElement element = (
    from cml2 in doc.Descendants()
    where cml2.Name.LocalName == "_MultipelAttributId"
    select cml2).FirstOrDefault();
于 2012-10-09T10:13:40.193 に答える
1

この MSDN の記事では、Linq to XML で名前空間を操作する方法について詳しく説明しています http://msdn.microsoft.com/en-us/library/bb669152.aspx

XNamespace d2p1 = "http://schemas.datacontract.org/2004/07/MyApp.Business.Entity";
XElement multipelAttributId = doc.Descendants(d2p1 + "_MultipelAttributId").FirstOrDefault();

Microsoft はこれらの型の暗黙的なキャストを作成しているため、文字列から XNamespace または XName をシームレスに作成できることに注意してください。

于 2012-10-09T10:25:45.583 に答える