相关疑难解决方法(0)

如何使用xml.etree.ElementTree编写XML声明

我正在使用Python在Python中生成XML文档ElementTree,但该tostring函数在转换为纯文本时不包含XML声明.

from xml.etree.ElementTree import Element, tostring

document = Element('outer')
node = SubElement(document, 'inner')
node.NewValue = 1
print tostring(document)  # Outputs "<outer><inner /></outer>"
Run Code Online (Sandbox Code Playgroud)

我需要我的字符串包含以下XML声明:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有任何记录的方法可以做到这一点.

是否有适当的方法来呈现XML声明ElementTree

python xml elementtree

51
推荐指数
4
解决办法
6万
查看次数

使用xml.etree.elementtree打印格式良好的xml文件

我试图xml.etree.elementtree用Python写出xml文件.问题在于它们不断生成一行.我希望能够轻松地引用它们,所以如果它可能我真的希望能够干净利落地写出来.

这就是我得到的

<Language><En><Port>Port</Port><UserName>UserName</UserName></En><Ch><Port>IP??</Port><UserName>????</UserName></Ch></Language>
Run Code Online (Sandbox Code Playgroud)

这是我想看到的.

<Language>
    <En>
        <Port>Port</Port>
        <UserName>UserName</UserName>
    </En>
    <Ch>
        <Port>IP??</Port>
        <UserName>????</UserName>
    </Ch>
</Language>
Run Code Online (Sandbox Code Playgroud)

python xml elementtree

49
推荐指数
2
解决办法
9万
查看次数

使用toprettyxml()时新行的问题

我目前正在python脚本中使用xml.dom模块的toprettyxml()函数,我对换行有一些麻烦.如果不使用newl参数或者如果我使用toprettyxml(newl ='\n'),它实际上会显示几行而不是一行.

例如

f = open(filename, 'w')
f.write(dom1.toprettyxml(encoding='UTF-8'))
f.close()
Run Code Online (Sandbox Code Playgroud)

显示:

<params>


    <param name="Level" value="#LEVEL#"/>


    <param name="Code" value="281"/>


</params>
Run Code Online (Sandbox Code Playgroud)

有谁知道问题的来源以及如何使用它?仅供参考我使用的是Python 2.6.1

python xml

10
推荐指数
3
解决办法
1万
查看次数

用于XML字符串的Python pretty XML打印机

我使用python生成一个冗长而丑陋的XML字符串,我需要通过漂亮的打印机对其进行过滤以使其看起来更好.

我发现这篇文章适用于python漂亮的打印机,但是我必须将XML字符串写入要回读的文件以使用这些工具,如果可能的话我想避免使用这些工具.

什么python漂亮的工具可以在字符串上工作?

python xml pretty-print

7
推荐指数
2
解决办法
2万
查看次数

etree.tostring()xml python中的pretty_print

我正在尝试使用pretty_print选项打印出xml doc.但这是一个错误

TypeError:tostring()得到一个意外的关键字参数'pretty_print'

我在这里错过了什么吗?

def CreateXML2():
    Date = etree.Element("Date", value=time.strftime(time_format, time.localtime()));
    UserNode = etree.SubElement(Date, "User");
    IDNode = etree.SubElement(UserNode, "ID");
    print(etree.tostring(Date, pretty_print=True));
Run Code Online (Sandbox Code Playgroud)

python xml pretty-print

7
推荐指数
1
解决办法
1万
查看次数

在现有的 xml 文件中添加元素 python

我有一个现有的 xml 文件,如下所示:

<vehicleTravelTimeMeasurements>
        <vehicleTravelTimeMeasurement name="ckkkkkkkkkk" no="2">
            <start link="1" pos="3.864983"/>
            <end link="3" pos="23.275375"/>
        </vehicleTravelTimeMeasurement>
        <vehicleTravelTimeMeasurement name="" no="3">
            <start link="1" pos="3.864983"/>
            <end link="2" pos="13.275375"/>
        </vehicleTravelTimeMeasurement>
</vehicleTravelTimeMeasurements>
Run Code Online (Sandbox Code Playgroud)

我尝试使用 xml.etree.cElementTree 构建与上面所示相同的格式,并将它们正确添加到 xml 中:

new = ET.Element("vehicleTravelTimeMeasurement", name = "kkk", no = "4")
newsub1 =  ET.Element("start", link = "1", pos="3.88888")
newsub2 = ET.Element("end",link = "3", pos = "3.88888")
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

先感谢您!

python xml celementtree

4
推荐指数
1
解决办法
1万
查看次数

为什么python中的元素树在XML中添加了额外的新行和空格

我怎样才能改变我的xml的外观

 <root>
     <elem1>
         <value>
            122
         </value>
         <text>
            This_is_just_a_text
         </text>
     </elem1>
     <elem1>
         <value>
            122
         </value>
         <text>
            This_is_just_a_text
         </text>
     </elem1>   
 </root>
Run Code Online (Sandbox Code Playgroud)

看起来像:

 <root>
     <elem1>
         <value>122</value>
         <text>This_is_just_a_text</text>
     </elem1>
     <elem1>
         <value>122</value>
         <text>This_is_just_a_text</text>
     </elem1>   
 </root>
Run Code Online (Sandbox Code Playgroud)

我只是想知道是什么原因发生的?顺便说一句,下面的方法/函数用于添加缩进!

 def prettify(elem):
     """
         Return a pretty-printed XML string for the Element.
     """
     rough_string = ET.tostring(elem, 'utf-8')
     reparsed = minidom.parseString(rough_string)
     return reparsed.toprettyxml(indent="\t")
Run Code Online (Sandbox Code Playgroud)

python xml elementtree python-2.7 python-3.x

2
推荐指数
1
解决办法
2731
查看次数

用Python编写易读的XML

除了创建一个方法以外,还有其他方法可以使用易于阅读的python编写XML吗?xMLFile.write(xmlDom.toxml())确实创建了正确的xml,但读取它们非常困难.我试过toprettyxml,但似乎并没有做太多.例如,以下是我认为人类可读的xml:

<myroot>
    <ent1
        att1="val1"
        att2="val2"
        att3="val3"
    />
    <ent2>
        <ent3
            att1="val1"
            att2="val2"
        />
    </ent2>
</myroot>
Run Code Online (Sandbox Code Playgroud)

以下响应中的解决方案摘要:
1)如果您只是需要偶尔读取它以进行调试,那么在编写时使用xmllint或xml编辑器来读取它而不是格式化xml.或者
2)使用像Beautiful Soup这样的图书馆.或
3)编写自己的方法

python xml

1
推荐指数
1
解决办法
2597
查看次数

如何使用 Python 创建 XML 文件?

我想创建一个 XML 文件。我试过了,但格式看起来很糟糕,它只显示一行。

就这个:

import xml.etree.cElementTree as ET
root = ET.Element("data")
doc = ET.SubElement(root, "status", date="20210123")

ET.SubElement(doc, "name", name="john").text = "some value1"
ET.SubElement(doc, "class", name="abc").text = "some vlaue2"

tree = ET.ElementTree(root)
tree.write("FILE.xml")
Run Code Online (Sandbox Code Playgroud)

输出是:

<data><status date="20210123"><name name="john">some value1</name><class name="abc">some vlaue2</class></status></data>
Run Code Online (Sandbox Code Playgroud)

但我的期望输出是:

<?xml version="1.0" encoding="UTF-8"?>

<data>
     <status>
          <name name="john">some value1</name>
          <class name="abc">some vlaue2</class>
     </status>
</data>
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个想法,请。我真的很感激。谢谢

python xml pretty-print elementtree

1
推荐指数
1
解决办法
7794
查看次数