我有一个结构为的XML文件:
<?xml version='1.0'?>
<a>
<b>
<d>
<LineCode>0</LineCode>
<LineName>Metro</LineName>
<LineDescription>Test C&C all countries with MCFM</LineDescription>
</d>
.......
<e>.....</e>
<f>....</f>
</b>
</a>
在此文件中,我添加了以下代码部分:
XElement newElement = new XElement("e",
new XElement("e1", "test1"),
new XElement("e2", "test2"),
new XElement("e3", "test3 ));
doc.Root.Element("a").Element("d").AddAfterSelf(newElement);
doc.Save(file.Directory + "//" + file.Name);
运行此代码后,修改了初始XML文件中使用的所有特殊字符。 例如,第一行成为:
<?xml version="1.0" encoding="utf-8"?>
行成了:
<LineDescription>Test C&C all countries with MCFM</LineDescription>
如何在不修改现有字符的情况下在我的XML文件中添加新部分?或者如何在不修改现有特殊字符的情况下保存?
答案 0 :(得分:1)
==观察#1 ==
<!-- Before: -->
<?xml version='1.0'?>
<!-- After: -->
<?xml version="1.0" encoding="utf-8"?>
说明:如果省略encoding
属性,utf-8
is the default。
==观察#2 ==
<!-- Before: -->
&
<!-- After: -->
&
说明:用于表示ampersand 的 XML实体等同于。
==摘要==
新文件将由其他应用程序使用,并且可能存在 可能是阅读或处理新文件的问题。
表现良好的 XML处理软件应该以同等的方式处理您的文档之前和之后。因此,如果您在阅读或处理新编辑的XML文件时遇到问题,那么这些问题确实应该得到解决。但是你可能没有预料到的那类问题。
答案 1 :(得分:1)
如果处理文件的代码应该处理标准XML,那么存储字符的形式无关紧要。原始文件使用字符的数字代码,而新保存的文件使用标准实体名称。这同样适用于XML标题行 - version ='1.0'和version =“1.0” - 应该被视为完全相同,并且附加元素仅标识在写入文件时使用的字符集。
如果您的其他应用程序使用的是标准XML解析器,或者能够读取标准XML的自定义解析器,则修改后的XML应该没有问题。您可能遇到的唯一问题是,如果这些其他应用程序无法读取标准XML(即它们假设所有值都使用单引号,或者它们没有正确处理XML标准实体等) - 在这种情况下,您可能需要使用在发送到这些应用程序的任何文件上过滤解析器,以确保满足这些要求。 (即一个简单的SAX解析器,当使用附加限制触发事件时写出文件)