从XML搜索数据并使用python写入其他xml文件

时间:2018-03-21 01:28:14

标签: python xml

我想知道在XML中搜索数据的最佳方法是什么,然后在找到匹配后将所有部分写入另一个文件,给定以下xml:

<root>
    <title>
        <control>
            <id>001</id>
            <gas-type>gasoline</gas-type>
            <brand>honda</brand>
        </control>
    </title>
    <title>          
        <control>
            <id>002</id>
            <gas-type>diesel</gas-type>
            <brand>volvo</brand>
        </control>
    </title>
</root>

e.g

如果用户输入为id =&#39; 001&#39;然后获取:

中的所有数据
    <title>
        <control>
            <id>001</id>
            <gas-type>gasoline</gas-type>
            <brand>honda</brand>
        </control>
    </title>

并将其写入新文件。

到目前为止,我找到了一种搜索ID的方法:

from xml.dom import minidom


mixml="""<root>
    <title>
        <control>
            <id>001</id>
            <gas-type>gasoline</gas-type>
            <brand>honda</brand>
        </control>
    </title>
    <title>          
        <control>
            <id>002</id>
            <gas-type>diesel</gas-type>
            <brand>volvo</brand>
        </control>
    </title>
</root>"""

user = input('id:')

xmldoc = minidom.parseString(mixml)


itemlist = xmldoc.getElementsByTagName("id")

for i in itemlist:
    if i.firstChild.nodeValue == user:

比较用户输入与id标记。

1 个答案:

答案 0 :(得分:1)

您可以使用BeautifulSoup。

from bs4 import BeautifulSoup
soup = BeautifulSoup(open(your_file,encoding="utf8"), 'html.parser')
contentgroup = soup.find_all('control')
myresult = [item for item in contentgroup if item.id.contents[0]=='001']

结果将是:

 [<control>
 <id>001</id>
 <gas-type>gasoline</gas-type>
 <brand>honda</brand>
 </control>]