使用BeautifulSoup在Python中查找非递归DOM子节点

时间:2014-01-15 20:36:48

标签: python xml dom xml-parsing beautifulsoup

有没有办法使用BeautifulSoup在Python中找到非递归的DOM子节点?

E.g。考虑解析pom.xml文件:

<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>
    ...

如果我想让groupId位于顶层(特别是project->groupId,而不是project->parent->groupId),我会使用:

with open(pom) as pomHandle:
    soup = BeautifulSoup(pomHandle)

groupId = soup.groupid.text

但不幸的是,无论层次结构级别是groupId,它都会在文件中找到project->parent->groupId的第一次物理出现。我实际上只想在特定节点级别进行非递归查找,而不是在其子级内。有没有办法在BeautifulSoup

中执行此操作

1 个答案:

答案 0 :(得分:4)

您可以使用recursive=False

在“项目”节点内搜索
groupId = soup.project.find('groupid', recursive=False).text

希望有所帮助。

相关问题