很好的PythonXML解析器,可以处理大量使用命名空间的文档

很好的PythonXML解析器,可以处理大量使用命名空间的文档,python,xml,namespaces,xml-namespaces,Python,Xml,Namespaces,Xml Namespaces,Python elementTree似乎无法用于名称空间。我的选择是什么? BeautifulSoup在名称空间方面也是垃圾。 我不想把它们去掉 特定python库如何获取命名空间元素及其集合的示例都是+1 编辑:您能否提供代码,使用您选择的库来处理这个真实世界的用例 如何获取字符串“换行符”、“2.6”和列表[“PYTHON”、“XML”、“XML-NAMESPACES”] <?xml version="1.0" encoding="UTF-8"?> <zs:searchRe

Python elementTree似乎无法用于名称空间。我的选择是什么? BeautifulSoup在名称空间方面也是垃圾。 我不想把它们去掉

特定python库如何获取命名空间元素及其集合的示例都是+1

编辑:您能否提供代码,使用您选择的库来处理这个真实世界的用例

如何获取字符串“换行符”、“2.6”和列表[“PYTHON”、“XML”、“XML-NAMESPACES”]

<?xml version="1.0" encoding="UTF-8"?>
<zs:searchRetrieveResponse
    xmlns="http://unilexicon.com/vocabularies/"
    xmlns:zs="http://www.loc.gov/zing/srw/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:lom="http://ltsc.ieee.org/xsd/LOM">
    <zs:records>
        <zs:record>
            <zs:recordData>
                <srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema">
                    <name>Line Break</name>
                    <dc:title>Processing XML namespaces using Python</dc:title>
                    <dc:description>How to get contents string from an element,
                        how to get a collection in a list...</dc:description>
                    <lom:metaMetadata>
                        <lom:identifier>
                            <lom:catalog>Python</lom:catalog>
                            <lom:entry>2.6</lom:entry>
                        </lom:identifier>
                    </lom:metaMetadata>
                    <lom:classification>
                        <lom:taxonPath>
                            <lom:taxon>
                                <lom:id>PYTHON</lom:id>
                            </lom:taxon>
                        </lom:taxonPath>
                    </lom:classification>
                    <lom:classification>
                        <lom:taxonPath>
                            <lom:taxon>
                                <lom:id>XML</lom:id>
                            </lom:taxon>
                        </lom:taxonPath>
                    </lom:classification>
                    <lom:classification>
                        <lom:taxonPath>
                            <lom:taxon>
                                <lom:id>XML-NAMESPACES</lom:id>
                            </lom:taxon>
                        </lom:taxonPath>
                    </lom:classification>
                </srw_dc:dc>
            </zs:recordData>
        </zs:record>
        <!-- ... more records ... -->
    </zs:records>
</zs:searchRetrieveResponse>

断线
使用Python处理XML名称空间
如何从元素中获取内容字符串,
如何在列表中获取集合。。。
python
2.6
python
XML
XML名称空间
那么:

libxml(http://xmlsoft.org/) 最好、更快的xml解析库。 有一些python的实现

是名称空间感知的

>>> from lxml import etree
>>> et = etree.XML("""<root xmlns="foo" xmlns:stuff="bar"><bar><stuff:baz /></bar></root>""")
>>> etree.tostring(et, encoding=str) # encoding=str only needed in Python 3, to avoid getting bytes
'<root xmlns="foo" xmlns:stuff="bar"><bar><stuff:baz/></bar></root>'
>>> et.xpath("f:bar", namespaces={"b":"bar", "f": "foo"})
[<Element {foo}bar at ...>]
输出:

name: Frank Malina
lom_entry: 2.6
lom_ids: ['PYTHON', 'XML', 'XML-NAMESPACES']

您是否有关于如何将其与名称空间一起使用的示例?+1 lxml是xml/xslt/xpath相关任务所需的唯一python工具/包。您将如何围绕提供的示例编写代码?在web上缺乏这种lxml工作的食谱是令人震惊的。目前,我已经开始剥离名称空间并使用BeautifulSoup进行遍历。这在许多级别上都不是最理想的。@Frank Malina:XPath不是特定于lxml的,在web上的XPath上有一些可用的资源。但我会尝试一下……这实际上相当漂亮。我对XML和XPath了如指掌,我总是发现使用lxml是一个挑战,因为缺乏好的示例。以上是非常有价值的。谢谢。我喜欢你的MWE的元特性。在示例代码中使用相关关键字意味着更多用户可以找到问题和答案。
name: Frank Malina
lom_entry: 2.6
lom_ids: ['PYTHON', 'XML', 'XML-NAMESPACES']