如何使用System.XML在C#中逐行注释XML文件

时间:2019-01-11 09:44:25

标签: c# xml

我需要使用System.XML注释和取消注释XML节点及其子节点。

开始XML:

<?xml version="1.0" encoding="utf-8"?>
    <test>
    <!--comment...-->    
        <childTest>
            <childchildTest>5<childchildTest/>
        </childTest>
    </test>

注释整个节点将不是问题,并且很容易实现,例如example。但是我的问题是,我已经在节点中添加了一些注释,并且每个XML规则都不允许嵌套注释。

这意味着我将不得不逐行注释掉XML文件,这样就不会破坏带有嵌套注释的XML文件结构。

所需的输出:

<?xml version="1.0" encoding="utf-8"?>
<!--    <test> -->
    <!--comment...-->    
<!--        <childTest> -->
<!--           <childchildTest>5<childchildTest/> -->
<!--        </childTest> -->
<!--    </test> -->

是否可以使用System.XML实现此功能,还是我必须使用正则表达式来做到这一点?

2 个答案:

答案 0 :(得分:3)

假设您将此XML妥善组织在一个文件中(这意味着每个节点都在自己的行上,如您所介绍的那样),则可以使用以下这种形式:

File.WriteAllLines("path to new XML file", File.ReadAllLines("path to XML file").Select(line => line.Trim().StartsWith("<!--") ? line : $"<!--{line}-->"));

这部分line.Trim().StartWith("<!--") ? line : $"<!--{line}-->"表示如果line是注释(以<!--开头),则不要对其进行注释,否则,请这样做。

答案 1 :(得分:1)

我认为,没有提供此功能的框架方法。 您可以阅读XML文件行,然后创建包含每行注释的新文件,如下面的代码所示。

notifyItemChanged()