解决LINQ to XML中XML命名空间导致查询结果为空的问题
本文探讨了使用LINQ to XML处理包含XML命名空间的XML数据时,查询结果返回null的问题。 代码旨在从XML中提取数据,但由于命名空间的使用不当导致查询失败。
LINQ to XML的Descendants
和Element
方法接收XName
参数。直接使用字符串代替XName
对象虽然可以自动转换,但容易出错。 为了解决这个问题,需要在使用元素名称的字符串表示之前,显式地使用XNamespace
实例来指定命名空间:
<code class="language-csharp">XNamespace ns = "http://myvalue.com"; XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace"; var elements = from data in xmlElements.Descendants(ns + "Result") select new { TheBool = (bool)data.Element(nsa + "TheBool"), TheId = (int)data.Element(nsa + "TheId"), };</code>
请注意Descendants
方法中使用了ns
,Element
方法中使用了nsa
。 通过显式定义命名空间,可以确保目标元素正确,从而解决Descendants
返回null的问题。
以上是为什么在使用 XML 命名空间时我的 LINQ to XML 查询返回 Null?的详细内容。更多信息请关注PHP中文网其他相关文章!