getElementsByTagName
は、単一ノードレベルでしか再帰的に使用する方法はありますか?Python xml.domの再帰的(単一ノードレベル)getElementsByTagName
など。
xmldoc = minidom.parse('pom.xml')
groupId = xmldoc.getElementsByTagName("groupId")[0].childNodes[0].nodeValue
しかし残念ながら、最初の物理的な出現を見つけた:私はトップレベル(特にproject->groupId
、ないproject->parent->groupId
)、私が使用でgroupId
を取得したい場合は
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>2.0.0</modelVersion>
<groupId>com.parent.somemodule</groupId>
<artifactId>some_module</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Some Module</name>
...
:pom.xml
ファイルを解析考えます階層レベル(project->parent->groupId
)に関係なく、ファイル内のgroupId
の値です。私は実際に、その子どもの中ではなく、特定のノードレベルでのみ非再帰的な検索をしたいと思っています。 xml.dom
でそれを行う方法はありますか?
UPDATE:私はBeautifulSoup
に切り替えたが、まだ、暗黙の再帰的なトラバースと同じ問題がある:あなたがgetElementsByTagName()
以上の結果を反復処理し、ルートレベルにである最初の要素取ることができますFinding a nonrecursive DOM subnode in Python using BeautifulSoup
「ElementTree」はもっと細かく洗練されていると言っていますか? – amphibient
@ amphibientよく、これは私の意見です。 XMLファイルを解析する必要があるときは、 'ElementTree'、' lxml'、または 'BeautifulSoup'を使います。 – alecxe
もご覧ください。http://stackoverflow.com/questions/21146417/simple-dom-traversing-in-python-using-xml-etree-elementtree?おかげで – amphibient