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
参数调用Decendants
, XName
的NameSpace
(恰好为空)实际上除了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