我有一个' xmlDocument' -Object, 其中包含以下结构:
<Projects>
<Project>
<Name>Value1</Name>
</Project>
<Project>
<Name>Value2</Name>
</Project>
</Projects>
我需要通过c#在运行时更改这些值。 我的想法是
但我不知道如何根据其innertext选择xml节点。 我研究了一下,并尝试了:
XmlNode nameNode = doc.SelectSingleNode("Projects\\Project\\Name[text()='" + projectName + "']");
导致&#39; XPathException&#39;。
你如何以正确的方式写出路径?
答案 0 :(得分:2)
我建议使用LINQ to XML而不是XPath:
XDocument doc = ...; // However you load the XML
XElement element = doc.Root
.Elements("Project")
.Elements("Name")
.Where(x => x.Value == projectName)
.SingleOrDefault();
// Check whether or not element is null (if so, you haven't found it)
答案 1 :(得分:0)
我意识到很久以前就问过这个问题,并且找到了一个替代解决方案,但是我遇到了类似的问题,我设法通过使用带有以下内容的XmlNodeList使用xpath解决了该问题
XmlNode root = xmlDoc.DocumentElement;
XmlNodeList节点= root.SelectNodes(“ // [local-name()='Projects'// [local-name()='Project'// * [local-name( )='Name'] [text()='“ + projectName +”']“);
然后您可以遍历XmlNodeList
foreach(节点中的XmlNode xn)......
在其他人想使用此方法的情况下发布