我需要一个通过xml文件的应用程序,更改一些属性值并添加其他属性。我知道我可以用XmlDocument和XmlWriter来做到这一点。但是,我不想更改文档的间距。有没有办法做到这一点?或者,我必须自己解析文件吗?如何在不改变格式/间距的情况下在C#中编辑XML?
回答
XmlDocument
有一个属性PreserveWhitespace
。如果将此设置为true
,则将保留不重要的空白。
见MSDN
编辑
如果我执行下面的代码,包括空格换行符被保留。 (这是真的,一个空间被插入<b
和/>
之间)
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.LoadXml(
@"<a>
<b/>
</a>");
Console.WriteLine(doc.InnerXml);
的输出是:
<a>
<b />
</a>
无意义的空白将通常被丢弃或重新格式化。因此,除非XML文件在节点上使用xml:space="preserve"
属性,否则应保留其确切的空格,否则按照XML规范更改空白是可以的。
感谢。我在根节点上放置了xml:space =“preserve”属性,它保留了大部分的间距。但是,对于跨越多行的节点,它将它们放在一条线上。而且,我注意到以/>结尾的简单标签,它在结束标签前面插入一个空格。例如,对于节点“
不,这不适用于普通的XML类,因为节点定义中的空白不是文档空白的一部分。 xml:space确保文档中的所有内容空白都保持不变,因为诸如两个标签之间没有文字的标签之间的空白也没有意义,任何可以改变(实际上,这可以让你很好地缩进文档而不改变它们的含义)。 – Lucero 2009-10-12 15:51:38
- 1. 如何在不改变.java的情况下应用android风格?
- 2. 如何在不丢失格式的情况下更改ImageView
- 3. 如何在不影响行间距的情况下截断UILabel?
- 4. 在不修改输入文件的情况下编辑和合并xml文件
- 5. 如何在不修改编辑器的情况下在JComboBox上使用addItem()?
- 6. 如何在不改变变量的情况下进行递归
- 7. 如何在没有innerHTML的情况下在Internet Explorer 5中编辑表格?
- 8. 如何在不更改数据的情况下更改表格编码?
- 9. 如何在不手动修改文件的情况下编辑部署?
- 10. CakePHP 3如何在不更改密码的情况下编辑用户(散列)
- 11. 在不改变视图的情况下提交Grails表格
- 12. 如何编辑C编辑模式下的XML文件#
- 13. 只有在XML已经改变的情况下才从XML生成C#类
- 14. 默认情况下,UITableView编辑模式
- 15. 在不改变时间的情况下在时区之间转换时间?
- 16. 如何在不改变大小写的情况下使用str_replace?
- 17. 如何在不改变大小的情况下旋转QPixmap
- 18. 在不更改PHP格式的情况下读写JSON文件
- 19. 如何在不使用变量的情况下编程scala DSL?
- 20. 在不使用javascript的情况下在swift/obj c中编辑css文件
- 21. 在编辑模式下的网格视图单元格间距是asp.net
- 22. 在不改变背景风格的情况下更改jumbotron中的文本
- 23. 在不编辑的情况下添加编译器选项Makefile
- 24. 如何在不更改样式的情况下设置RichTextBox.SelectionFont FontFamily?
- 25. 如何在不更改样式的情况下设置RichTextBox.SelectionFont FontFamily?
- 26. 如何在不改变OpenCV的情况下编写像素并进行读取
- 27. 在不改变网站的情况下在Rails中做动作
- 28. rails在不改变数据库格式(大写)的情况下创建标签
- 29. 改变的情况下
- 30. 如何在不编辑htaccess的情况下访问Symfony中的多个环境?
这并不能保留所有的空格。元素内部的空白(即元素本身,而不是其本体)不会保留 - ' '将被转换为' '。 –
adrianbanks
2009-10-12 15:32:34
谢谢。这和xml:space =“preserve”属性一样,并且更干净。但它仍然不能保留换行符。有没有办法保存休息? – bsh152s 2009-10-12 15:40:20
@Brandon - 据我所见,换行符被保留。我已经添加了一个代码示例。 – 2009-10-12 17:06:42