Csharp/C#教程:XDocument使用具有命名空间的Root元素读取XML文件分享


XDocument使用具有命名空间的Root元素读取XML文件

我在使用具有多个名称空间的根节点解析XML文件时遇到了一些麻烦。 我想得到一个包含’UserControlLibrary’的类型字符串的节点’对象’列表:
XML文件:

                   

我试过了:

  XDocument webXMLResource = XDocument.Load(@"../../../../Web.xml"); IEnumerable values = webXMLResource.Descendants("object"); 

没有返回任何结果。

命名空间的另一个技巧 – 您可以使用XElement.GetDefaultNamespace()来获取根元素的默认命名空间。 然后使用此默认命名空间进行查询:

 var xdoc = XDocument.Load(path_to_xml); var ns = xdoc.Root.GetDefaultNamespace(); var objects = xdoc.Descendants(ns + "object"); 

当您使用XName参数调用DecendantsXNameNameSpace (恰好为空)实际上除了LocalName之外还包含在Name中。 因此,您只能通过LocalName进行查询

 p.Descendants().Where(p=>p.Name.LocalName == "object") 

尝试使用命名空间:

 var ns = new XNamespace("https://www.springframework.net"); IEnumerable values = webXMLResource.Descendants(ns + "object"); 

如果您使用的是decedent,则必须添加如下所示的名称空间

  XDocument webXMLResource = XDocument.Load(@"../../../../Web.xml"); XNamespace _XNamesapce = XNamespace.Get("https://www.w3.org/2001/XMLSchema-instance"); IEnumerable values = from ele in webXMLResource .Descendants(_XNamesapce + "object") select ele; 

希望它对你有用

上述就是C#学习教程:XDocument使用具有命名空间的Root元素读取XML文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/991439.html

(1)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐