Ich versuche, den Innertextwert eines Elements mit LINQ-to-XML (einem XElement-Objekt) zu finden. Ich rufe meinen Service auf und erhalte eine XML-Antwort, die ich erfolgreich in ein XElement-Objekt geladen habe. Ich möchte den Innertext eines der Elemente extrahieren - aber jedes Mal, wenn ich dies versuche, bekomme ich ein null-Ergebnis.
Ich habe das Gefühl, dass mir etwas super Einfaches fehlt, aber ich bin ziemlich neu in LINQ-to-XML. Jede Hilfe wird geschätzt.
Ich versuche, den Innertextwert des Elements StatusInfo/Status zu erhalten. Hier ist mein zurückgegebenes XML-Dokument:
Meine Antwort
tag:foo.com,2012:/bar/06468dfc-32f7-4650-b765-608f2b852f22
Meine Webdienste
Meine Webdienste
tag:foo.com,2012:/my-web-services
<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>Verfügbar</Status> <!-- Ich möchte den Innertext -->
</StatusInfo>
</content>
</entry>
</feed>
</code></pre>
<p>Hier ist ein Code-Schnipsel, den ich benutze, um den Wert zu extrahieren (der nicht funktioniert):</p>
<pre><code> 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();
</code></pre>
<p>Meine <code>status</code>-Variable ist immer <code>null</code>. Ich habe mehrere Varianten davon ausprobiert, aber ohne Erfolg. Was mich verwirrt, ist der Namespace - <code>tag</code> und <code>2008</code> sind definiert. Ich weiß nicht, ob ich das richtig behandele oder ob es eine bessere Möglichkeit gibt, damit umzugehen.</p>
<p>Außerdem habe ich keine Kontrolle über das XML-Schema oder die Struktur des XML-Dokuments. Der Service, den ich verwende, ist außerhalb meiner Kontrolle.</p>
<p>Vielen Dank für jede Hilfe!</p></x-turndown>