明明白白回答你的问题没有,因为XML格式使用这些字符来表示父和子元素,例如,你不能有任何的价值领域的<
或>
XML文件<note>
,<to>
,<from>
等
扩大对我的回答:当一个Python脚本使用XML library写道:<
或>
,图书馆它们转换为分别<
或>
。我不相信这是可能的,因为它实际上过滤了<
和>
字符以及字符实体引用。这是有道理的 - XML库正在阻止您中断用于父项xml.etree.cElementTree.Element
或任何子项xml.etree.cElementTree.SubElement
对象字段的语法。例如,使用在此great answer代码块进行实验:
import xml.etree.cElementTree as ET
root = ET.Element("root")
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some <value>"
ET.SubElement(doc, "field2", name="asdfasd").text = "some <other value>"
tree = ET.ElementTree(root)
tree.write("filename.xml")
这产生<root><doc><field1 name="blah">some <value></field1><field2 name="asdfasd">some <other value></field2></doc></root>
。
美化它:
<root>
<doc>
<field1 name="blah">
some <value>
</field1>
<field2 name="asdfasd">
some <other value>
</field2>
</doc>
</root>
然而,并没有什么东西手动添加这些字符阻止你:在XML文件中读取和重新写,添加文字,即使它包含<
或>
。如果你想要一个合适的XML文件,只要确保这些字符只用在注释字段中。
为您的特定问题,你可以从客户端的XML文件中的行读取,那么要么删除<
和>
字符,如果客户需要它们,将它们移动到行的注释部分。部分挑战是你必须离开<note>,
`等文件部分...这是具有挑战性的,但它是可能的!
以下是我期望的结果。
<?xml version="1.0" encoding="UTF-8"?>
<note Name="PrintPgmInfo VDD"> <!-- PrintPgmInfo <> VDD -->
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
如果您不想让客户端修复该文件,那么显而易见的解决方案就是让您自己修复它。如果它是一次性的,编辑它并用预定义的实体引用替换保留的字符;如果这种情况会重复发生,请在您选择的批处理编辑器中编写一个sed脚本或等效代码以进行更改。 (如果您没有选择的批处理编辑器,并且遇到类似的问题,那么您应该了解批处理编辑器并善于处理。) – 2015-04-01 20:22:40