在python中获取XML的所有相同属性值

rx2299

我试图从“ TextRegion-> Coords”标签中获取所有“点”属性值。我不断从中得到错误。注意:有名为“ TextRegion”和“ ImageRegion”的标签,它们都包含“ Coords”。但是,我只希望“ TextRegion”中的Coords点。

请帮忙!谢谢!!

这是我的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PcGts xmlns="http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15"
    <Metadata>
        <Creator/>
        <Created>2021-01-24T17:11:35</Created>
        <LastChange>1969-12-31T19:00:00</LastChange>
        <Comments/>
    </Metadata>
    <Page imageFilename="0004.png" imageHeight="3655" imageWidth="2493">
        <TextRegion id="r1" type="paragraph">
            <Coords points="1653,146 1651,148"/>
            <TextEquiv>
                <Unicode/>
            </TextEquiv>
        </TextRegion>
        <TextRegion id="r2" type="paragraph">
            <Coords points="2071,326 2069,328 2058,328 2055"/>
            <TextEquiv>
                <Unicode/>
            </TextEquiv>
        </TextRegion>
        <ImageRegion id="r3">
            <Coords points="443,621 443,2802 2302,2802 2302,621"/>
        </ImageRegion>
        <TextRegion id="r4" type="paragraph">
            <Coords points="2247,2825 2247,2857 2266,2857 2268,2860 2268"/>
            <TextEquiv>
                <Unicode/>
            </TextEquiv>
        </TextRegion>
        <TextRegion id="r5" type="paragraph">
            <Coords points="731,2828 731,2839 728,2841"/>
            <TextEquiv>
                <Unicode/>
            </TextEquiv>
        </TextRegion>
    </Page>
</PcGts>

这是我的代码:

from lxml import etree as ET

tree = ET.parse('0004.xml')
root = tree.getroot()
print(root.tag)

for tag in root.find_all('Page/TextRegion/Coords'):
    value = tag.get('points')
    print(value)
完善

假设您发布的XML是一种复制/粘贴问题缺少根元素打开关闭,你的另一主要问题是经典的XML解析问题涉及下一个默认的命名空间,其中包括开始任何属性解析节点xmlns 没有冒号分隔前缀一样xmlns:doc="..."

因此,您需要在Python中定义一个临时的名称空间前缀,以解析每个命名元素,您可以使用传入的字典findall(不是find_all)来进行处理。

from lxml import etree as ET

tree = ET.parse('0004.xml')
nsmp = {'doc': 'http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15'}

root = tree.getroot()
print(root.tag)

# SPECIFY NAMESPACE AND PREFIX ALL NAMED ELEMENTS
for tag in root.findall('doc:Page/doc:TextRegion/doc:Coords', namespaces=nsmp):
    value = tag.get('points')
    print(value)

# 1653,146 1651,148
# 2071,326 2069,328 2058,328 2055
# 2247,2825 2247,2857 2266,2857 2268,2860 2268
# 731,2828 731,2839 728,2841

顺便说一句,lxml是一个功能丰富的XML库(需要第三方安装),在其他功能强大的工具中,该库支持完整的XPath 1.0。etree只需将importline更改,上述代码仍可与Python内置的代码一起使用from xml.etree import ElementTree as ET

但是,可以使用以下方法lxml扩展该库,例如直接解析为属性xpath

tree = ET.parse('0004.xml')

# SPECIFY NAMESPACE AND PREFIX ALL NAMED ELEMENTS
for pts in tree.xpath('//doc:Coords/@points', namespaces=nsmp):
    print(pts)

# 1653,146 1651,148
# 2071,326 2069,328 2058,328 2055
# 2247,2825 2247,2857 2266,2857 2268,2860 2268
# 731,2828 731,2839 728,2841

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何删除所有具有相同属性值但NSMutableArray中的对象的对象

来自分类Dev

Javascript-添加具有不同值的相同属性

来自分类Dev

使用ElementTree获取python3中的所有xml属性值

来自分类Dev

GraphViz文件中具有相同属性的节点组

来自分类Dev

计算具有相同属性值的对象

来自分类Dev

MAYA中的PYTHON:获取所有属性

来自分类Dev

不同元素中相同属性的XML值不能重复

来自分类Dev

如何从相同的名称xml C#获取所有值

来自分类Dev

在matplotlib中绘制具有相同属性的多个函数

来自分类Dev

php,xml从具有不同属性的标记中输出整个值

来自分类Dev

如何排列具有相同属性值的对象数组?

来自分类Dev

在Powershell中,如何在数组中测试已经包含具有所有相同属性的对象?

来自分类Dev

Javascript:如何从对象数组中获取分配给相同属性的值的唯一列表?

来自分类Dev

如何在React JS中获取具有相同属性名称的数组中输入标签的值

来自分类Dev

删除具有相同属性值的重复实体

来自分类Dev

当输入是属性值Javascript的数组时,从Array对象中删除具有相同属性值的对象

来自分类Dev

如何使用Xquery在序列中获取节点的相同属性值?

来自分类Dev

如何从多个具有相同值的字典中获取所有值到列表python中

来自分类Dev

在xml文件中编辑倍数节点的相同属性

来自分类Dev

Java-如何从集合中删除具有相同属性值的元素?

来自分类Dev

检索列表中的所有对象在python中的属性是否具有相同的值

来自分类Dev

LINQy检查多个集合中是否有相同属性值的对象的方法

来自分类Dev

解析具有相同标签和不同属性的xml

来自分类Dev

如何使用VB.net计算XML中具有相同属性值的节点总数

来自分类Dev

从 XML 获取所有属性值

来自分类Dev

XML - XSLT 元素列表 - 连接具有相同属性值的元素

来自分类Dev

如何从多个类中获取所有相同的属性?

来自分类Dev

如何从具有相同属性值的列表中删除项目,其中计数大于 2

来自分类Dev

来自具有不同属性值的 TSQL 表中的 XML

Related 相关文章

  1. 1

    如何删除所有具有相同属性值但NSMutableArray中的对象的对象

  2. 2

    Javascript-添加具有不同值的相同属性

  3. 3

    使用ElementTree获取python3中的所有xml属性值

  4. 4

    GraphViz文件中具有相同属性的节点组

  5. 5

    计算具有相同属性值的对象

  6. 6

    MAYA中的PYTHON:获取所有属性

  7. 7

    不同元素中相同属性的XML值不能重复

  8. 8

    如何从相同的名称xml C#获取所有值

  9. 9

    在matplotlib中绘制具有相同属性的多个函数

  10. 10

    php,xml从具有不同属性的标记中输出整个值

  11. 11

    如何排列具有相同属性值的对象数组?

  12. 12

    在Powershell中,如何在数组中测试已经包含具有所有相同属性的对象?

  13. 13

    Javascript:如何从对象数组中获取分配给相同属性的值的唯一列表?

  14. 14

    如何在React JS中获取具有相同属性名称的数组中输入标签的值

  15. 15

    删除具有相同属性值的重复实体

  16. 16

    当输入是属性值Javascript的数组时,从Array对象中删除具有相同属性值的对象

  17. 17

    如何使用Xquery在序列中获取节点的相同属性值?

  18. 18

    如何从多个具有相同值的字典中获取所有值到列表python中

  19. 19

    在xml文件中编辑倍数节点的相同属性

  20. 20

    Java-如何从集合中删除具有相同属性值的元素?

  21. 21

    检索列表中的所有对象在python中的属性是否具有相同的值

  22. 22

    LINQy检查多个集合中是否有相同属性值的对象的方法

  23. 23

    解析具有相同标签和不同属性的xml

  24. 24

    如何使用VB.net计算XML中具有相同属性值的节点总数

  25. 25

    从 XML 获取所有属性值

  26. 26

    XML - XSLT 元素列表 - 连接具有相同属性值的元素

  27. 27

    如何从多个类中获取所有相同的属性?

  28. 28

    如何从具有相同属性值的列表中删除项目,其中计数大于 2

  29. 29

    来自具有不同属性值的 TSQL 表中的 XML

热门标签

归档