我在C#中的xml文档中有一个简单的xml节点,我想查询,然后将visible属性的值设置为false.下面是xml.我需要能够通过节点名称(DGField)和text_id(Test.ChangeRank)选择节点.有谁知道如何做到这一点?提前致谢.
<DGField text_id="Test.ChangeRank" template="Ranking" visible="true">
Run Code Online (Sandbox Code Playgroud)
假设您的XmlDocument被称为doc,那么以下内容应该可行.
XmlNode node = doc.SelectSingleNode("//DGField[@text_id='Test.ChangeRank']");
if (node != null)
{
node.Attributes["visible"].Value = "false";
}
Run Code Online (Sandbox Code Playgroud)
这可以通过更多的错误检查来确保更改的属性存在等,但这样可以保持干净.
基本上第一行使用XPath表达式来定位DGField元素,其中text_id ='Test.ChangeRank'.如果找到,则返回node,然后用于操作所需的属性值.
我在XPath查询中使用了'//'语法,以便搜索整个Xml文档,这不是最佳的,更具体的是XPath可以更好地执行.例如,如果您有一个完整的文档,看起来像这样
<root>
<DGFields>
<DGField text_id='1' template='Ranking' visible='true' />
<DGField text_id='Test.ChangeRank' template='Ranking' visible='true' />
</DGFields>
</root>
Run Code Online (Sandbox Code Playgroud)
然后可以使用更具体的XPath查询,如下所示
XmlNode node = doc.SelectSingleNode(
"root/DGFields/DGField[@text_id='Test.ChangeRank']");
Run Code Online (Sandbox Code Playgroud)