【问题标题】:Change default parameter for built-in class method更改内置类方法的默认参数
【发布时间】:2023-03-24 11:08:02
【问题描述】:

我在我的项目中使用lxml。我有一个输入 xml,需要解析它。问题是根元素有xmlns="some_url",例如

<root xmlns="some_url">
<child>some_text</child>
<child>some_text</child>
<child>
<sub_child>text</sub_child>
</child>
</root>

我的xml要复杂得多,所以当我需要找到一些元素时,我使用:

root.findall("nsp:child/nsp:sub_child", namespaces={"nsp":"some_url"})

所以我的代码充满了 find 方法和相同的 namespaces={"nsp":"some_url"} 我怎样才能将这个命名空间作为默认值传递一次?我想我应该从_SimpleElementPath 类继承。但是 xml 元素如何知道使用这个继承的类呢?

【问题讨论】:

    标签: python xml lxml


    【解决方案1】:

    如果我错了,有人纠正我,但不幸的是,我认为 lxml 没有任何默认命名空间的概念,你总是被明确地传递命名空间。也许为传递命名空间的findall() 方法编写一个自定义装饰器?

    【讨论】:

    • 它会是什么样子?我应该将此装饰器添加到 lxml findall 方法吗?但是在这种情况下,我更改了不可接受的 lib 代码
    猜你喜欢
    • 2012-01-28
    • 2018-09-25
    • 2016-11-24
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多