如何在 C# 中使用 XmlDocument 和 XmlNode 修改现有 XML 文件

Posted

技术标签:

【中文标题】如何在 C# 中使用 XmlDocument 和 XmlNode 修改现有 XML 文件【英文标题】:How to modify existing XML file with XmlDocument and XmlNode in C# 【发布时间】:2011-02-03 06:23:42 【问题描述】:

我已经实现了在应用程序初始化时使用 XmlTextWriter 创建下面的 XML 文件。

并且知道我不知道如何使用 XmlDocumentXmlNode 更新 childNode id 值。

是否有一些属性可以更新 id 值?我试过 InnerText 但失败了。谢谢。

<?xml version="1.0" encoding="UTF-8"?>
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <License licenseId="" licensePath=""/>
  <DataCollections>
    <GroupAIDs>
      <AID id="100">
        <Variable id="200"/>
        <Variable id="201"/>
      </AID>
      <AID id="">
        <Variable id="205"/>
      </AID>
      <AID id="102"/>
    </GroupAIDs>
    <GroupBIDs>
      <BID id="2000">
        <AID id="100"/>
      </BID>
      <BID id="2001">
        <AID id="101"/>
        <AID id="102"/>
      </BID>
    </GroupBIDs>
    <GroupCIDs>
      <BID id="8"/>
      <BID id="9"/>
      <BID id="10"/>
    </GroupCIDs>
  </DataCollections>
</Equipment>

【问题讨论】:

Reading and Writing XML using c# 为什么不试试来这里问一个具体的问题呢?也向我们展示你到目前为止做了什么。 其实我也找了很多MSDN库的文章,做了一些练习,但是还是没有找到修改相关元素Attribute的方法。比如AID(element)的ID(attribute)和Variable(element)的ID(attribute)。我找不到 ChildNodeSetAttribute。谢谢。 挑剔: 应该有一个 结束标记 - 而不是 - 这不起作用,这不是有效的 XML 原样 【参考方案1】:

你需要做这样的事情:

// instantiate XmlDocument and load XML from file
XmlDocument doc = new XmlDocument();
doc.Load(@"D:\test.xml");

// get a list of nodes - in this case, I'm selecting all <AID> nodes under
// the <GroupAIDs> node - change to suit your needs
XmlNodeList aNodes = doc.SelectNodes("/Equipment/DataCollections/GroupAIDs/AID");

// loop through all AID nodes
foreach (XmlNode aNode in aNodes)

   // grab the "id" attribute
   XmlAttribute idAttribute = aNode.Attributes["id"];

   // check if that attribute even exists...
   if (idAttribute != null)
   
      // if yes - read its current value
      string currentValue = idAttribute.Value;

      // here, you can now decide what to do - for demo purposes,
      // I just set the ID value to a fixed value if it was empty before
      if (string.IsNullOrEmpty(currentValue))
      
         idAttribute.Value = "515";
      
   


// save the XmlDocument back to disk
doc.Save(@"D:\test2.xml");

【讨论】:

是否可以将更改保存在同一个 xml 文件 "D:\test.xml" 中? 是的,只需保存到相同的文件名。

以上是关于如何在 C# 中使用 XmlDocument 和 XmlNode 修改现有 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在c#中关闭xmldocument

C#下使用XmlDocument详解

在 C# 中使用 Xmldocument 修改 xml

XmlDocument 类正在删除格式、c#、.NET

[C#]在 XMLDocument 中添加 XSL 引用

使用带有 C# 的 XmlDocument 读取 XML 数据 - 读取属性数据并拆分结果