Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不更改特殊字符的情况下修改xml文件_C#_Xml - Fatal编程技术网

C# 在不更改特殊字符的情况下修改xml文件

C# 在不更改特殊字符的情况下修改xml文件,c#,xml,C#,Xml,我有一个具有以下结构的XML文件: <?xml version='1.0'?> <a> <b> <d> <LineCode>0</LineCode> <LineName>Metro</LineName> <LineDescription>Test C&#38;C all countries with MCF

我有一个具有以下结构的XML文件:

 <?xml version='1.0'?>
 <a>
   <b>
      <d>
         <LineCode>0</LineCode>
         <LineName>Metro</LineName>
         <LineDescription>Test C&#38;C all countries with MCFM</LineDescription>
      </d>
      .......
      <e>.....</e>
      <f>....</f>
  </b>
 </a>
运行此代码后,将修改初始XML文件中使用的所有特殊字符。 例如,第一行变成:

  <?xml version="1.0" encoding="utf-8"?>

线路变成:

 <LineDescription>Test C&amp;C all countries with MCFM</LineDescription>
测试C&;C所有拥有MCFM的国家
如何在不修改现有字符的情况下在我的XML文件中添加新节?或者如何在不修改现有特殊字符的情况下保存?

==观察#1=


说明:如果省略了
编码
属性

==观察#2==


&
&;
说明:这些表示XML实体是等效的

==摘要==

新文件将由其他应用程序使用,并且可能存在以下情况: 可能是读取或处理新文件时出现问题


表现良好的XML处理软件应该以同等的方式处理前后文档。因此,如果您在读取或处理新编辑的XML文件时遇到问题,那么这些问题确实应该得到解决。但是,您可能不会遇到预期的问题。

如果处理文件的代码应该处理标准XML,那么字符存储在哪种格式都不重要。原始文件使用字符的数字代码,而新保存的文件使用标准实体名称。这同样适用于XML头行-version='1.0'和version=“1.0”-应该被完全相同地对待,并且附加的元素只标识写入文件时使用的字符集


如果您的其他应用程序使用标准XML解析器,或者能够读取标准XML的自定义解析器,那么修改后的XML应该没有问题。您可能遇到的唯一问题是,如果这些其他应用程序无法读取标准XML(即,它们假设所有值都使用单引号,或者它们没有正确处理XML标准实体,等等)——在这种情况下,您可能需要对发送给这些应用程序的任何文件使用过滤解析器,以确保满足这些要求。(即,一个简单的SAX解析器,在使用附加限制触发事件时写出文件)

为什么更改该部分很重要?我只想保留初始字符。此文件被其他应用程序使用,在读取或处理此新文件时可能会出现问题。在尝试“修复”此问题之前,我会先测试是否存在问题。XML标准允许这些事情,因此读取文件的程序应该能够很好地处理这些事情。
 <LineDescription>Test C&amp;C all countries with MCFM</LineDescription>