这让我有点疯狂。我从数据库列中提取XML字符串,并使用XDocument.Parse成功创建XDocument。我之前使用linq来查询xml树,但由于某种原因,我正在做的一切都是返回null。它与命名空间有关吗?
以下是我的XDocument对象的文本可视化器的示例:
// removed XML for privacy reasons
我正在尝试的查询示例:
XElement algorithmId = (from algoId in reportLogXml.Descendants(ALGORITHM_ID)
select algoId).FirstOrDefault();
我使用一个常量作为字符串值,我有四倍检查拼写匹配以及尝试几个明显在文档中的不同元素,但它们都返回null。我在这里做错了什么?
答案 0 :(得分:2)
是的,它可能与命名空间有关,但<AlgorithmId>
元素也没有后代。
您可以像这样修复ns问题:
//untested
XNameSpace ns0 = "http://schemas.datacontract.org/2004/07/Adapters.Adapter";
var ns1 = reportLogXml.Root.GetDefaultNamespace();
// check: ns0 and ns1 should be equal here
... in reportLogXml.Descendants(ns1 + ALGORITHM_ID)
请注意,这是一个特殊的+
运算符,请严格遵循格式。