LINQ to XML - 使用前缀访问后代

Ven*_*nki 10 c# xml linq

我有一个像这样的示例xml文件

<vs:BioData>
<vs:Name>Name</vs:Name>
<vs:Address>address</vs:Address>
<vs:Zip>Zip</vs:zip>
</vs:BioData>
Run Code Online (Sandbox Code Playgroud)

所有节点都有一个前缀值作为vs,谁能告诉我如何解析这个文件来读取名称和地址信息?我是LINQ的新手.任何有关这方面的帮助将不胜感激.

谢谢!

Jon*_*eet 12

您需要知道命名空间是什么.这将在早些时候宣布,例如:

xmlns:vs="http://some_url_here"
Run Code Online (Sandbox Code Playgroud)

您可以使用XNamespace以下方式进

XNamespace vs = "http://some_url_here";
var names = doc.Descendants(vs + "Name")
               .Select(x => (string) x)
               .ToList();
Run Code Online (Sandbox Code Playgroud)

+这里实际上是一个转换XNamespace和一个字符串到XName.


Chr*_*ham 5

前缀"vs"应映射到XML文档标题中的命名空间,例如:

<FooDocument xmlns:vs="http://schemas.example.com/vs">
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用XNamespace通过LINQ选择这些元素,如下所示:

XNamespace vs = "http://schemas.example.com/vs";

var names = myXDoc.Root.Descendants(vs + "Name");
Run Code Online (Sandbox Code Playgroud)

XNamespace和XName类型都支持从字符串进行隐式转换.