我需要在XML节点中使用以下属性值:
CommandLine="copy $(TargetPath) ..\..\
echo dummy > dummy.txt"
实际上这是VS2008中生成的.vcproj文件的一部分。 

表示换行符,因为应该有两个单独的命令。
我正在使用Python 2.5和minidom来解析XML - 但遗憾的是我不知道如何存储像
这样的序列,我能得到的最好的东西是
。
如何准确存储
?
UPD:确切地说,我必须存储不是&,而是\ r \ n序列的形式 &#x0A
答案 0 :(得分:1)
您应该尝试将实际字符(ASCII 13和ASCII 10)存储在属性值中,而不是存储已经转义的对应字符。
编辑:看起来minidom无法正确处理属性值中的换行符。
即使允许属性值中的文字换行符,但在文档解析时它将面临规范化,此时它将转换为空格。
我在这方面提出了一个错误:http://bugs.python.org/issue5752
答案 1 :(得分:1)
我正在使用Python 2.5和minidom来解析XML - 但不幸的是我不知道如何存储像
好吧,你不能具体指定你想要十六进制转义,但根据DOM LS标准,实现应该自动将属性值中的\ r \ n更改为字符引用。
不幸的是,minidom没有:
>>> from xml.dom import minidom
>>> document= minidom.parseString('<a/>')
>>> document.documentElement.setAttribute('a', 'a\r\nb')
>>> document.toxml()
u'<?xml version="1.0" ?><a a="a\r\nb"/>'
这是minidom中的一个错误。在另一个DOM中尝试相同的操作(例如pxdom):
>>> import pxdom
>>> document= pxdom.parseString('<a/>')
>>> document.documentElement.setAttribute('a', 'a\r\nb')
>>> document.pxdomContent
u'<?xml version="1.0" ?><a a="a b"/>'
答案 2 :(得分:0)
&符号是XML中的特殊字符,因此大多数xml解析器需要有效的xml才能运行。让minidom为你逃脱&符号(实际上它应该已经被转义)然后当你需要显示转义值时,转换它。