LINQ2XML后代在Windows Phone 8中工作

本文关键字:工作 Phone Windows 后代 LINQ2XML | 更新日期: 2023-09-27 18:34:41

我正在开发Windows Phone 8 C#/XAML .NET 4.5应用程序

正在尝试从我得到的 XML 中选择具有给定名称的元素,但是当我尝试使用 Descendants 选择它时,它会返回空集合/列表/结果数组。

当没有选择名称时,它返回

正常,但是当我尝试使用名称搜索时,它返回空。

我可能只是愚蠢,犯了一个愚蠢的错误。你看到一些/你能解释一下吗?

例子:

myXMLString:

<root>
  <element>
    <thisOne xmlns="something">example</thisOne>
  <element>
  <others></others>
</root>

法典:

XDocument xmlData = XDocument.Parse(myXMLString);
//is always null
var thisOne = xmlData.Root.Descendants("thisOne").FirstOrDefault();
//returns the flattened version of the tree in a list
var descendants = xmlData.Root.Descedants().ToList();

LINQ2XML后代在Windows Phone 8中工作

您当前正在寻找名为 thisOne 的元素,这些元素不在命名空间中。您需要指定something命名空间...xmlns="something"部分指定此元素和其他后代的默认命名空间。幸运的是,LINQ to XML 使使用 XML 命名空间变得非常容易:

XNamespace ns = "something";
var thisOne = xmlData.Root.Descendants(ns + "thisOne").FirstOrDefault();