如何通过内部文本从xml文档中检索节点。 例如
<w:t>WARNING</w:t>
节点在xml文档中多次包含不同的值。 我想只检索那些内部文本包含“警告”的w:t节点。
怎么做?
答案 0 :(得分:1)
要查询带前缀的元素,您必须使用XmlNamespaceManager
注册正确的前缀到命名空间URI映射,然后在XPath中使用该注册的前缀,例如:
var xml = @"<root xmlns:w=""test"">
<w:t>WARNING</w:t>
</root>";
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
var nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
//register proper prefix-to-namespace-URI mapping
nsManager.AddNamespace("w", "test");
//following XPath used to select <w:t> nodes with inner text contains "WARNING"
var result = xmlDoc.DocumentElement.SelectSingleNode("//w:t[contains(., 'WARNING')]", nsManager);
//print result
Console.WriteLine(result.OuterXml);
答案 1 :(得分:0)
试试这个:
var wtNodes = elements.Where(e => e.Name.LocalName.Equals("w:t"));
var warningNodes = wtNodes.Where(node => node.Value.Contains("WARNING"));
答案 2 :(得分:0)
试试这个:
xmlNodeList xNlist= xDoc.selectNodes("//pre:t[.="WARNING"]",objXmlnsMgr);
下面: xDoc是XmlDocument; objXmlnsMgr是XmlNamespaceManager(&#39; w&#39;在你的情况下)&amp; pre是它的前缀。