gpt4 book ai didi

python - 如何使用python获取父节点下子节点的索引?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:50 25 4
gpt4 key购买 nike

我的 xml 文件是这样的:

<?xml version="1.0"?>
<BCPFORMAT
xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="12"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
<COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>

我需要知道子节点ID=“1”在其父节点“RECORD”中的索引。(即,在本例中索引为0)请帮我解决这个问题。

谢谢..:)

最佳答案

使用xml.etree.ElementTree :

import xml.etree.ElementTree as ET

root = ET.fromstring('''<?xml version="1.0"?>
<BCPFORMAT
...
</BCPFORMAT>''')
# Accessing parent node: http://effbot.org/zone/element.htm#accessing-parents
parent_map = {c: p for p in root.getiterator() for c in p} child = root.find('.//*[@ID="1"]')
print(list(parent_map[child]).index(child)) # => 0

使用lxml :

import lxml.etree as ET

root = ET.fromstring('''<?xml version="1.0"?>
<BCPFORMAT
...
</BCPFORMAT>''')
child = root.find('.//*[@ID="1"]')
print(child.getparent().index(child)) # => 0

关于python - 如何使用python获取父节点下子节点的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com