LINQ to XML – 使用前缀访问后代
我有一个像这样的示例xml文件
Name address Zip
所有节点都有一个前缀值作为vs,谁能告诉我如何解析这个文件来读取名称和地址信息? 我是LINQ的新手。 任何有关这方面的帮助将不胜感激。
谢谢!
您需要知道命名空间是什么。 这将在早些时候宣布,例如:
xmlns:vs="http://some_url_here"
您可以使用XNamespace
进行查询:
XNamespace vs = "http://some_url_here"; var names = doc.Descendants(vs + "Name") .Select(x => (string) x) .ToList();
这里的+
实际上是将XNamespace
和一个字符串转换为XName
。
前缀“vs”应映射到XML文档头中的命名空间,例如:
然后,您可以使用XNamespace通过LINQ选择这些元素,如下所示:
XNamespace vs = "http://schemas.example.com/vs"; var names = myXDoc.Root.Descendants(vs + "Name");
XNamespace和XName类型都支持从字符串进行隐式转换。
我知道这篇文章很老,但想提供一些额外的信息。 在寻求更复杂的xml文件的帮助时,我被引导到这个问题和答案。 我的xml有几个名称空间,并且也有嵌套的命名空间。 我能够通过此链接中的建议解决我的问题
这是很好的帮助,并希望在此处发布,以防其他人遇到同样的问题