Python 如何使用xmlformatter解释xml中的符号和
我仍在学习Python,所以如果我下面的方法看起来不合适,请耐心等待。我正在编写一个程序,该程序将读取xml文件并添加缺少的节点。我使用Python的ElementTree浏览xml并进行更改 不幸的是,ElementTree没有格式化添加的xml格式。它只是把一切都放在一行。为了解决这个问题,我导入了xmlformatter。xmlformatter工作得很好,但它正在将我的(和引号分号)更改为xml中的实际引号,因为所讨论的xml文件使用了“&”来表示引号 下面是xml代码的一个示例:Python 如何使用xmlformatter解释xml中的符号和,python,xml,xml-parsing,elementtree,Python,Xml,Xml Parsing,Elementtree,我仍在学习Python,所以如果我下面的方法看起来不合适,请耐心等待。我正在编写一个程序,该程序将读取xml文件并添加缺少的节点。我使用Python的ElementTree浏览xml并进行更改 不幸的是,ElementTree没有格式化添加的xml格式。它只是把一切都放在一行。为了解决这个问题,我导入了xmlformatter。xmlformatter工作得很好,但它正在将我的(和引号分号)更改为xml中的实际引号,因为所讨论的xml文件使用了“&”来表示引号 下面是xml代码的一个示例:
<override action="replaceElement" path="pdf-
list/pdf[@name="HfsSdbWks" ]">
<element name="pdf">
<attribute name="size" value="186"></attribute>
<attribute name="name" value="HfsSdbWks"></attribute>
<attribute name="path"
value="/clientFolder/downloads/HFS_SDB_Wks.pdf">
</attribute>
<attribute name="devPath"
value="/clientFolder/downloads/HFS_SDB_Wks.pdf"></attribute>
</element>
</override>
目前我已经达到了预期的效果。它是一个更新的xml文件,具有所有新节点/属性,并格式化为可读。代码如下:
overrides parent="runtime/view/PDF.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FndtOverridesSchema.xsd">
<override action="replaceElement" path="pdf-
list/pdf[@name="HfsSdbWks" ]">
<element name="pdf">
<attribute name="size" value="186"></attribute>
<attribute name="name" value="HfsSdbWks"></attribute>
<attribute name="path"
value="/01040_ybr_ybrfndt/downloads/HFS_SDB_Wks.pdf"></attribute>
<attribute name="devPath"
value="/01040_ybr_ybrfndt/downloads/HFS_SDB_Wks.pdf"></attribute>
</element>
</override>
<----This is the new node that was added---->
<override action="replaceElement" path="pdf-
list/pdf[@name="Hippa" ]">
<element name="pdf">
<attribute name="size" value="129"></attribute>
<attribute name="name" value="Hippa"></attribute>
<attribute name="path" value="/01040_ybr_ybrfndt/downloads/Hippa.pdf">
</attribute>
<attribute name="devPath"
value="/01040_ybr_ybrfndt/downloads/Hippa.pdf"></attribute>
</element>
</override>
overrides parent=“runtime/view/PDF.xml”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=“fndtroveriesschema.xsd”>
一般来说,解析XML然后重新序列化它将丢失XML认为不重要的信息—例如,开始标记中属性之间的额外空格、属性顺序、冗余名称空间声明,或者“
和”
之间的区别
如果保留这些信息对你来说真的很重要,那么你应该首先问为什么?如果XML解析器不关心区别,那么为什么要这样做?一个可能的答案是,您的工作流需要在转换后手动编辑XML。我自己肯定也有过这样的经历,在这种情况下,我采用了与您使用的相同的变通方法。“目前我得到了预期的结果。”那么问题是什么呢?既然我是python新手,我只想确保我的方法不会浪费时间重新发明轮子。我认为我的方法是有效的,可以完成工作,但我想看看其他人的建议。像你这样的变通方法是需要的。从XML的角度来看,实体引用
“
和文字引号是等效的。相关问题:.Ty这非常有用。
overrides parent="runtime/view/PDF.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FndtOverridesSchema.xsd">
<override action="replaceElement" path="pdf-
list/pdf[@name="HfsSdbWks" ]">
<element name="pdf">
<attribute name="size" value="186"></attribute>
<attribute name="name" value="HfsSdbWks"></attribute>
<attribute name="path"
value="/01040_ybr_ybrfndt/downloads/HFS_SDB_Wks.pdf"></attribute>
<attribute name="devPath"
value="/01040_ybr_ybrfndt/downloads/HFS_SDB_Wks.pdf"></attribute>
</element>
</override>
<----This is the new node that was added---->
<override action="replaceElement" path="pdf-
list/pdf[@name="Hippa" ]">
<element name="pdf">
<attribute name="size" value="129"></attribute>
<attribute name="name" value="Hippa"></attribute>
<attribute name="path" value="/01040_ybr_ybrfndt/downloads/Hippa.pdf">
</attribute>
<attribute name="devPath"
value="/01040_ybr_ybrfndt/downloads/Hippa.pdf"></attribute>
</element>
</override>