簡體   English   中英

XML - 根據內部文本選擇 xmlNode

[英]XML - Select xmlNode depending on innertext

我有一個 'xmlDocument'-Object,它包含以下結構:

<Projects>
  <Project>
    <Name>Value1</Name>
  </Project>
  <Project>
    <Name>Value2</Name>
  </Project>
</Projects>

我需要通過 c# 在運行時更改這些值。 我的想法是

  • 創建新的“xmlnode”對象
  • 改變它的內文
  • 保存文檔

但我不知道如何根據其內部文本選擇 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM