XML保留结构

时间:2019-02-19 12:45:03

标签: c# xml

我正在对XML文件进行操作,原始文件有很多注释,例如:

<!-- Type: This is a comment-->

现在,我需要修改此XML文件中的一些属性,我将其读为没有注释,例如:

XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.IgnoreComments = true;
XmlReader readers = XmlReader.Create(path, readerSettings);

现在,当我尝试修改此文件并将其保存回文件时,这些文件将删除注释,因为最初我没有注释地阅读了该文件。但是,如果要投入生产,要求是在文件中保留原始注释。最好的方法是什么?

现在,我可以传入两个带注释的引用,一个带不注释的引用,对不带注释的XML进行操作,并对带注释的XML进行修改。其他任何想法

编辑

<Node1 someattribute>
  <childnode someattr1="value1" someattr2="Food" />
</Node1
<!-- Type: This is a comment1-->
<!-- Type: This is a comment2-->
<!-- Type: This is a comment3-->
<Node2 someattribute>
    <childnode someattr1="value1" someattr2="Book" />
</Node2>
<!-- Type: This is a comment1-->
<!-- Type: This is a comment2-->
<!-- Type: This is a comment3-->

如果您看到我有Node1,有时我想直接跳到节点1,而不是XPATH,目前我正在使用:

node.PreviousSibling;
node.NextSibling;

因此,通过这种方式,我可以直接跳到下一个节点,也可以根据需要跳到上一个节点

1 个答案:

答案 0 :(得分:-1)

您可以尝试以下一种方法:

            XmlReader reader = XmlReader.Create("old.xml");
        XmlWriter writer = XmlWriter.Create("new.xml");

        while (reader.Read())
        {
            if (reader.NodeType != XmlNodeType.Comment)
            {
                // Do your stuff here!
            }

            writer.WriteNode(reader, true);
        }

        writer.Close();
        reader.Close();