LINQ-to-XML (XElement オブジェクト) を使用して、要素の内部テキスト値を見つけようとしています。サービスを呼び出すと、XElement オブジェクトに正常に読み込まれたという XML 応答が返されます。要素の 1 つの内部テキストを抽出したいのですが、これを実行しようとするたびに結果が null になります。
非常に単純なものが欠けているように感じますが、LINQ-to-XML にはかなり慣れていません。どんな助けでも大歓迎です。
StatusInfo/Status 要素の内部テキスト値を取得しようとしています。返される XML ドキュメントは次のとおりです。
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
<title type="text">My Response</title>
<id>tag:foo.com,2012:/bar/06468dfc-32f7-4650-b765-608f2b852f22</id>
<author>
<name>My Web Services</name>
</author>
<link rel="self" type="application/atom+xml" href="http://myServer/service.svc/myPath" />
<generator uri="http://myServer" version="1">My Web Services</generator>
<entry>
<id>tag:foo.com,2012:/my-web-services</id>
<title type="text" />
<updated>2012-06-27T14:22:42Z</updated>
<category term="tag:foo.com,2008/my/schemas#system" scheme="tag:foo.com,2008/my/schemas#type" />
<content type="application/vnd.my.webservices+xml">
<StatusInfo xmlns="tag:foo.com,2008:/my/data">
<Status>Available</Status> <!-- I want the inner text -->
</StatusInfo>
</content>
</entry>
</feed>
値を抽出するために使用しているコードのスニペットを次に示します (これは機能しません)。
XElement root = XElement.Load(responseReader);
XNamespace tag = "tag:foo.com,2008:/my/data";
var status = (from s in root.Elements(tag + "Status")
select s).FirstOrDefault();
私のstatus
変数は常にnull
です。これについていくつかのバリエーションを試しましたが、役に立ちませんでした。私を混乱させているのは名前空間tag
であり2008
、定義されています。これを正しく処理しているかどうか、またはこれに対処するためのより良い方法があるかどうかはわかりません。
また、XML スキーマや XML の構造を制御することもできません。私が使用しているサービスは私の手に負えません。
助けてくれてありがとう!