[英]XML - Select xmlNode depending on innertext
我有一個 'xmlDocument'-Object,它包含以下結構:
<Projects>
<Project>
<Name>Value1</Name>
</Project>
<Project>
<Name>Value2</Name>
</Project>
</Projects>
我需要通過 c# 在運行時更改這些值。 我的想法是
但我不知道如何根據其內部文本選擇 xml 節點。 我研究了一下,並嘗試過:
XmlNode nameNode = doc.SelectSingleNode("Projects\\Project\\Name[text()='" + projectName + "']");
這會導致“XPathException”。
你如何以正確的方式寫出路徑?
我建議使用 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)
我意識到很久以前就有人問過這個問題,並且找到了一個替代解決方案,但是我遇到了類似的問題,我設法通過使用 XmlNodeList 使用 xpath 解決了它,如下所示
XmlNode root = xmlDoc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("//*[local-name()='Projects'//*[local-name()='Project'//*[local-name()='Name'][text()='" + projectName + "']");
然后您可以遍歷 XmlNodeList
foreach (XmlNode xn in nodes)....
發布以防其他人想使用此方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.