Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用xmlformatter解释xml中的符号和_Python_Xml_Xml Parsing_Elementtree - Fatal编程技术网

Python 如何使用xmlformatter解释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代码的一个示例:

我仍在学习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=&quot;HfsSdbWks&quot; ]">
   <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=&quot;Hippa&quot; ]">
   <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=&quot;HfsSdbWks&quot; ]">
   <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=&quot;Hippa&quot; ]">
   <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>