从xmlDocument中选择特定的xml节点,然后更改xml节点的属性

我在C#中的xml文档中有一个简单的xml节点,我想查询,然后将visible属性的值设置为false。 下面是xml。 我需要能够通过节点名称(DGField)和text_id(Test.ChangeRank)选择节点。 有谁知道如何做到这一点? 提前致谢。

 

假设您的XmlDocument被称为doc,那么以下内容应该可行。

  XmlNode node = doc.SelectSingleNode("//DGField[@text_id='Test.ChangeRank']"); if (node != null) { node.Attributes["visible"].Value = "false"; } 

这可以通过更多错误检查来确保更改的属性存在等,但这样可以保持清洁。

基本上第一行使用XPath表达式来定位DGField元素,其中text_id =’Test.ChangeRank’。 如果找到,则返回node,然后用于操作所需的属性值。

我在XPath查询中使用了’//’语法,以便搜索整个Xml文档,这不是最佳的,更具体的是XPath可以更好地执行。 例如,如果您有一个完整的文档,看起来像这样

       

然后可以使用更具体的XPath查询,如下所示

 XmlNode node = doc.SelectSingleNode( "root/DGFields/DGField[@text_id='Test.ChangeRank']"); 

有很多方法可以做到这一点。 我认为使用XmlDocument和Regex是最好的选择。

这是XML方法:

  XmlDocument xdoc = new XmlDocument(); xdoc.Load(@"c:\myxml.xml"); XmlNode xn = xdoc.SelectSingleNode("//DGField[@text_id='Test.ChangeRank']"); xn.Attributes["visible"].Value = "false";