让我们假设我们有这个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();