有没有办法在Linq-to-XML查询中仅使用本地名称检索元素?

前端之家收集整理的这篇文章主要介绍了有没有办法在Linq-to-XML查询中仅使用本地名称检索元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们假设我们有这个xml:
<?xml version="1.0" encoding="UTF-8"?>
<tns:RegistryResponse status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Failure"
    xmlns:tns="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
    xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0">
    <tns:RegistryErrorList highestSeverity="">
        <tns:RegistryError codeContext="XDSInvalidRequest - DcoumentId is not unique."
            errorCode="XDSInvalidRequest"
            severity="urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Error"/>
    </tns:RegistryErrorList>
 </tns:RegistryResponse>

要检索RegistryErrorList元素,我们可以这样做

XDocument doc = XDocument.Load(<path to xml file>);
XNamespace ns = "urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0";
XElement errorList = doc.Root.Elements( ns + "RegistryErrorList").SingleOrDefault();

但不是这样的

XElement errorList = doc.Root.Elements("RegistryErrorList").SingleOrDefault();

有没有办法在没有元素名称空间的情况下进行查询.基本上有一些特别的东西
类似于在XPath中使用local-name()(即// * [local-name()=’RegistryErrorList’])

var q = from x in doc.Root.Elements()
        where x.Name.LocalName=="RegistryErrorList"
        select x;

var errorList = q.SingleOrDefault();
原文链接:https://www.f2er.com/xml/292553.html

猜你在找的XML相关文章