标签: celementtree

如何使用cElementTree检索父节点?

对于xml

<grandparent>
  <parent1>
     <child>data1</child>
  </parent1>
  <parent2>
     <child>data2</child>
  </parent2>
</grandparent>
Run Code Online (Sandbox Code Playgroud)

我需要包含父元组的列表,xml中每个父元素的数据.

有没有办法使用cElementTree?我能够为孩子,数据做这件事,但不幸的是孩子在所有的价值观上是相同的,因此没有多少用处.

python celementtree

8
推荐指数
2
解决办法
5265
查看次数

Iterparse对象接下来没有属性

我正在解析700mb文件,我有以下代码在我的测试文件上工作正常,没有行context.iter(context)和事件,elem = context.next().

form xml.etree import cElementTree as ET
source = ("AAT.xml")
context = iter(context)
event, root = context.next()
for event, elem in context:
         if event == event("end"):
             some processing...
             elem.clear()
         root.clear()
Run Code Online (Sandbox Code Playgroud)

然而,当我继续iterparse 700mb文件它仍然崩溃.阅读:

清除()树时使用ElementTree.iterparse()时内存使用量是否会增加?

我相信这是因为我需要清除root,但是我已经遵循了上面已经包含的一些教程我不断收到错误:

line 9, in <module>
event, root = context.next()
AttributeError: 'iterparse' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

我还是Python的新手,我无法理解为什么会发生这种情况,据我所知,我与这些例子一致.

python memory celementtree iterparse

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

在现有的 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万
查看次数

如何获取cElementTree中元素的所有文本子项?

cElementTree在 Python 中使用模块来获取XML树的文本子级,使用text属性。但它似乎只适用于直接文本孩子(见下文)。

$ python
...
>>> import xml.etree.cElementTree as ET
>>> root = ET.XML('<root><elm key="value">Some text</elm>More text</root>')
>>> root.text
>>> root = ET.XML('<root>Text 1<elm key="value">Text</elm>Text 2<elm2 />Text 3</root>')
>>> root.text
'Text 1'
>>>
Run Code Online (Sandbox Code Playgroud)

是否有可能检索所有直接给定的元素(如可能的列表,即文本儿童['More text']['Text 1', 'Text 2', 'Text 3']在上面的例子中)使用的cElementTree模块?

python xml celementtree xml-parsing

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

if语句中无法识别xml.etree.cElementTree中的Type元素

我正在使用cElementTree来解析xml文件.使用.getroot()函数提供元素类型作为结果.我想在if语句中使用这种类型

if type(elementVariable) == 'Element':
     do stuff
Run Code Online (Sandbox Code Playgroud)

但是,当我执行以下操作时,无法识别该类型:

import xml.etree.cElementTree as xml
file = 'test.xml'
# parse the xml file into a tree
tree = xml.parse(file)
# Get the root node of the xml file
rootElement = tree.getroot()
return rootElement
print type(rootElement)
print type(rootElement) == 'Element'
print type(rootElement) == Element
Run Code Online (Sandbox Code Playgroud)

输出:

<type 'Element'>
False
Traceback (most recent call last):
  File "/homes/ndeklein/workspace/MS/src/main.py", line 39, in <module>
    print type(rootElement) == Element
NameError: name 'Element' is not defined
Run Code Online (Sandbox Code Playgroud)

所以

print type(rootElement) 
Run Code Online (Sandbox Code Playgroud)

给'元素'作为类型,但是

print …
Run Code Online (Sandbox Code Playgroud)

python types if-statement celementtree

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

ElementTree XML 解析和 urllib2.urlopen

我正在使用以下方法打开 URL:

response = urllib2.urlopen(url, data, timeout=_TIMEOUT)
Run Code Online (Sandbox Code Playgroud)

并使用response.read(),它提供以下输出:

<XMLlookup licenseid="X4X6X42" reason="OK" status="1" />
Run Code Online (Sandbox Code Playgroud)

但是当我想使用 ElementTree 解析它时,如下所示:

print response.read()
t = ET.parse(response)
r = t.getroot()
print r.attrib.get('status')
Run Code Online (Sandbox Code Playgroud)

给我以下错误消息:

File "<string>", line 62, in parse
File "<string>", line 38, in parse
cElementTree.ParseError: no element found: line 1, column 0
Run Code Online (Sandbox Code Playgroud)

但是当我删除该行时response.read(),代码工作正常。我究竟做错了什么?

python xml urllib2 elementtree celementtree

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

使用ElementTree修改XML

<grandParent>
    <parent>
       <child>Sam/Astronaut</child>
    </parent>
</grandParent>
Run Code Online (Sandbox Code Playgroud)

我想通过在父标记内添加另一个子标记来修改上述XML.我正在做这样的事......

tree = ET.parse("test.xml")
a=ET.Element('parent')
b=ET.SubElement(a,"child")
b.text="Jay/Doctor"
tree.write("test.xml")
Run Code Online (Sandbox Code Playgroud)

这是修改xml文件的正确方法吗?有更好的方法吗?或者我应该在上面的代码中处理什么?

python xml elementtree celementtree xml-parsing

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