C# 4.0 将XComment替换为其内容

C# 4.0 将XComment替换为其内容,c#-4.0,linq-to-xml,C# 4.0,Linq To Xml,在有效的XML文件中,我有以下部分: <PropertyGroup> <WorkingDir>C:\SomeFolder\</WorkingDir> </PropertyGroup> <ItemGroup> <Files Include="$(WorkingDir)**\*.txt" /> <!--<Files Include="$(WorkingDir)**\*.log" />-->

在有效的XML文件中,我有以下部分:

<PropertyGroup>
  <WorkingDir>C:\SomeFolder\</WorkingDir>
</PropertyGroup>
<ItemGroup>
  <Files Include="$(WorkingDir)**\*.txt" />
  <!--<Files Include="$(WorkingDir)**\*.log" />-->
  <Files Include="$(WorkingDir)**\*.bat" />
  <!--<Files Include="$(WorkingDir)**\*.ps1" />
  <Files Include="$(WorkingDir)**\*.psm" />-->
  <Files Include="$(WorkingDir)**\*.cmd" />
</ItemGroup>
然而,这是我得到的输出:

<PropertyGroup>
  <WorkingDir>C:\SomeFolder\</WorkingDir>
</PropertyGroup>
<ItemGroup>
  <Files Include="$(WorkingDir)**\*.txt" />
  &lt;Files Include="$(WorkingDir)**\*.log" /&gt;
  <Files Include="$(WorkingDir)**\*.bat" />
  <!--<Files Include="$(WorkingDir)**\*.ps1" />
  <Files Include="$(WorkingDir)**\*.psm" />-->
  <Files Include="$(WorkingDir)**\*.cmd" />
</ItemGroup>

C:\SomeFolder\
文件包括=“$(WorkingDir)**\*.log”/

如果我单独输出
xComment.Value
的内容(例如,使用
Console.WriteLine()
),我会得到
-那么当我使用
XNode.ReplaceWith()
时,尖括号会发生什么变化?如何确保保留字符格式?

您需要首先解析注释中的XML,即
xComment.ReplaceWith(XElement.parse(xComment.Value))
。只要注释包含单个元素节点的标记,这种方法就应该有效,就像示例中的第一条注释一样。在更一般的情况下(即注释包含多个元素的标记或其他节点的标记),您需要
xComment.ReplaceWith(XElement.Parse(“+xComment.Value+”).nodes())

xComment.ReplaceWith(xComment.Value);
<PropertyGroup>
  <WorkingDir>C:\SomeFolder\</WorkingDir>
</PropertyGroup>
<ItemGroup>
  <Files Include="$(WorkingDir)**\*.txt" />
  &lt;Files Include="$(WorkingDir)**\*.log" /&gt;
  <Files Include="$(WorkingDir)**\*.bat" />
  <!--<Files Include="$(WorkingDir)**\*.ps1" />
  <Files Include="$(WorkingDir)**\*.psm" />-->
  <Files Include="$(WorkingDir)**\*.cmd" />
</ItemGroup>