Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取给定特定节点的所有同级元素_Python_Xml - Fatal编程技术网

Python 获取给定特定节点的所有同级元素

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>

我有以下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>
      <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?我显然可以忽略它,所以这不是什么大问题,但我只是好奇地想知道。