Python 获取给定特定节点的所有同级元素
我有以下example.xml文件:Python 获取给定特定节点的所有同级元素,python,xml,Python,Xml,我有以下example.xml文件: <ParentOne> <SiblingOneA>This is Sibling One A</SiblingOneA> <SiblingTwoA> <ChildOneA>Value of child one A</ChildOneA> <ChildTwoA>Value of child two A</ChildTwoA>
<ParentOne>
<SiblingOneA>This is Sibling One A</SiblingOneA>
<SiblingTwoA>
<ChildOneA>Value of child one A</ChildOneA>
<ChildTwoA>Value of child two A</ChildTwoA>
<ChildThreeA>Value of child three A</ChildThreeA>
<ChildFourA>Value of child four A</ChildFourA>
</SiblingTwoA>
</ParentOne>
这是一个兄弟姐妹
一个孩子的价值
儿童两个A的价值
儿童三A的价值
儿童四A的价值
我想检索“ChildThreeA”节点的所有同级元素的标记和值。因此,我希望输出类似于以下内容(或任何类似内容):
ChildOneA=子元素A的值
ChildTwoA=子级twoa的值
ChildFourA=子四A的值
我见过许多使用XPath的类似示例,但我希望使用一个简单的库,可以为我返回这个
例如,我正在使用getprevious().tag
,getprevious().text
,getnext().tag
和getnext().text
从相关节点返回上一个和下一个标记和文本,但这将只返回相邻元素,而不是所有同级元素。您可以尝试:
从io导入StringIO
从xml.etree导入ElementTree作为ET
data=”“”
这是一个兄弟姐妹
一个孩子的价值
儿童两个A的价值
儿童三A的价值
儿童四A的价值
"""
tree=ET.parse(StringIO(数据))
root=tree.getroot()
sibling_two=root.find('SiblingTwoA')
对于兄弟姐妹二的儿童:
打印(f'{children.tag}={children.text}')
给出输出:
ChildOneA : Value of child one A
ChildTwoA : Value of child two A
ChildThreeA : Value of child three A
ChildFourA : Value of child four A
这回答了你的问题吗?XPath不是“直截了当的”吗?@RamonMedeiros当它得到子对象时,它可以很好地工作,但对于兄弟姐妹来说就不行了(就我所尝试的那样)。但是将它与下面的答案结合起来可能会有用。@mzjn老实说,我不想使用XPath!非常感谢。我将试一试,看看在给定代码的情况下它是否有效(因为这只是一个片段)。出于好奇,在检查来自父节点的所有子节点时,它也将返回有问题的节点(即ChildThreeA)。是否有更明确的方法返回所有兄弟姐妹,以便不返回ChildThreeA?我显然可以忽略它,所以这不是什么大问题,但我只是好奇地想知道。