使用元素树 findall 解析 XML 命名空间

2023-12-12

如何使用查询元素树findall('Email')给定以下 xml?

<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.net/API/3.0">
    <EnvelopeStatus>
        <RecipientStatus>
                <Type>Signer</Type>
                <Email>[email protected]</Email>
                <UserName>Joe Shmoe</UserName>
                <RoutingOrder>1</RoutingOrder>
                <Sent>2015-05-04T09:58:01.947</Sent>
                <Delivered>2015-05-04T09:58:14.403</Delivered>
                <Signed>2015-05-04T09:58:29.473</Signed>
        </RecipientStatus>
    </EnvelopeStatus>
</DocuSignEnvelopeInformation>

我感觉这与命名空间有关,但我不确定。我看了看docs但运气不佳。

tree = <xml.etree.ElementTree.ElementTree object at 0x7f27a47c4fd0>
root = tree.getroot()
root
<Element '{http://www.docusign.net/API/3.0}DocuSignEnvelopeInformation' at 0x7f27a47b8a48>

root.findall('Email')
[]

您应该更仔细地阅读文档,特别是有关使用命名空间解析 XML,其中包含一个几乎正是您想要的示例。

但即使没有文档,答案实际上也包含在您的示例输出中。当您打印文档的根元素时...

>>> tree = etree.parse(open('data.xml'))
>>> root = tree.getroot()
>>> root
<Element {http://www.docusign.net/API/3.0}DocuSignEnvelopeInformation at 0x7f972cd079e0>

...你可以看到它打印了根元素名称(DocuSignEnvelopeInformation)带有命名空间前缀({http://www.docusign.net/API/3.0})。您可以使用相同的前缀作为参数的一部分findall:

>>> root.findall('{http://www.docusign.net/API/3.0}Email')

但这本身是行不通的,因为这只会发现Email根元素的直接子元素。您需要提供一个元素路径表达引起findall执行整个文档的搜索。这有效:

>>> root.findall('.//{http://www.docusign.net/API/3.0}Email')
[<Element {http://www.docusign.net/API/3.0}Email at 0x7f972949a6c8>]

您还可以使用 XPath 和名称空间前缀执行类似的搜索,如下所示:

>>> root.xpath('//docusign:Email',
... namespaces={'docusign': 'http://www.docusign.net/API/3.0'})
[<Element {http://www.docusign.net/API/3.0}Email at 0x7f972949a6c8>]

这使您可以使用类似 XML 的namespace:前缀而不是 LXML 命名空间语法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用元素树 findall 解析 XML 命名空间 的相关文章

随机推荐

  • 1/C# 中的 BigInteger

    我要实现 BigInteger ModPow 1 BigInteger 2 5 but 1 BigInteger总是回来0 这导致结果是0也 我试着寻找一些BigDecimalc 的类 但我什么也没找到 即使没有 有什么方法可以计算这个吗
  • OneDrive API Node.js - 无法使用 :/createUploadSession 内容范围错误

    我的问题是我无法上传大于 4MB 的文件 因此我根据以下内容使用了 createuploadsession创建上传会话 我成功从 createuploadsession 响应中获取 uploadUrl 值 现在我尝试使用此代码发出 PUT
  • r - 在 ggplot 中用一个 x 轴绘制两个图(3 个变量)

    我试图在一张图中绘制两个流量和一个降雨数据 我将其分为顶部和底部部分 如下图所示 在这里 我对这个情节有两个问题 花了很长时间但无法解决 为什么观察到的流量总是黑色的 即使我将其设置为蓝色 我是否不小心使用了其他一些参数来覆盖它 最重要的是
  • 为什么 const 数组无法从 constexpr 函数访问?

    我有一个名为 access 的 constexpr 函数 我想访问数组中的一个元素 char const const foo foo char const const bar 10 bar constexpr int access char
  • 如何在不存储的情况下将 Metro 应用程序部署到 Windows RT 设备 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我开发了一个地铁应用程序 仅供我的公司使用 所以我不会将其上传到 Windows 应用商
  • YFinance -tickerData.info 不适用于某些股票

    import yfinance as yf define the ticker symbol tickerSymbol AFT NZ get data on this ticker tickerData yf Ticker tickerSy
  • 查找两个字符串列表之间的差异

    我很确定这是重复的 但我已经尝试了一切 但我似乎仍然无法理解其中的差异 我有两个字符串列表 listA 和 listB 我正在尝试查找 listA 中不在 B 中的项目 例子 列表A 1 2 4 7 列表B 2 4 我想要的输出是 1 7
  • c -lz 库链接顺序(对符号“inflateInit2_”的未定义引用)

    我按此顺序链接 CodeBlocks 中的库 lz L usr local lib L usr local include pthread lswscale lavutil lavcodec lmp3lame lopus ltiff lvo
  • WPF - 动态资源与静态资源

    我在 WPF 项目中遇到了巨大的内存泄漏 并且正在尝试找出可以采取哪些措施来最大程度地减少它 为了访问资源 我 100 的时间都使用 StaticResource 我应该尽可能使用 DynamicResource 吗 StaticResou
  • 如何从sql server 2008中的日期获取该月的周数

    在microsoft sql server中的SQL语句中 有一个内置函数可以获取周数 但它是一年中的第几周 Select DatePart week 2012 11 30 returns 48 返回值48是一年中的周数 代替48 我想得到
  • UML 类图 - 使用枚举进行建模

    在 UML 类图中 我如何对导师可以在一周中工作多天而无需具体了解的情况进行建模 在我当前的解决方案中 1 名或多位导师每周工作 1 天或多天 由于导师工作的天数列表只是一个属性 并且似乎没有任何特定的结构来围绕它构建类 因此它应该是具有类
  • 媒体基金会使用 C 而不是 C++

    我正在学习使用 Microsoft 网站中显示的示例代码使用 Media Foundation API 使用 C 而不是 C 示例代码如下所示 HRESULT CreateVideoCaptureDevice IMFMediaSource
  • 如何多次appendChild(element)。 (相同元素)

    我的问题是 是否可以添加相同的元素而不重写相同的变量 我正在创建一个滑块 我需要附加一个div和一个班级slide el进入块slider 这是代码的一部分 var body html sliderBody btnLeft btnRight
  • 相同的表单数据,两个单独的提交按钮上的不同操作

    我有一个本质上是购物车的东西 需要有两个单独的结账选项 第一个操作使用户离开网站 但必须发布表单数据 如何创建两个提交按钮 将相同的表单数据发送到它们自己的单独页面 如果我理解正确 您在同一页面上有 2 个提交按钮 并且它们都具有相同的表单
  • 如何激活多模块项目中特定模块的 Maven 配置文件

    我们有一个多模块 Maven 项目 由一个父 POM 和 5 个或更多模块组成 如果我们激活自定义的 自动部署 配置文件 每个模块都可以作为构建的一部分部署到正在运行的服务器上 该配置文件在每个模块中明确定义 因为每个模块的部署方式 内容略
  • 转换为 DMatrix 后,XGBoost 训练和测试特征的差异

    只是想知道下一种情况怎么可能 def fit self train target xgtrain xgb DMatrix train label target missing np nan self model xgb train self
  • 如何从 urllib 读取lines()

    我有使用 http 的程序 我想从 http 读取数据 data urllib request urlopen someAddress read 并从中准备行列表 例如通过文件的 readlines 方法返回行 怎么做 urlopen 返回
  • 如何从 cor.test() 中提取 p.value 和估计值?

    我在 for 循环中对数据集执行 cor test 但我不知道如何从测试中提取估计和 tau 等信息 在数据集中执行 for 循环之前 cor test 函数返回如下 cor test armpit Corynebacterium 1 ar
  • 使用 jquery 查找键盘可见

    您好 我已经开发了响应式的 Android PhoneGap 应用程序 因此 当键盘可见时 我需要在纵向和横向模式下隐藏页脚 而键盘不可见时 我需要在两种模式下显示页脚 我已经尝试过该示例 但它工作不正常 如果我以纵向模式打开应用程序 当键
  • 使用元素树 findall 解析 XML 命名空间

    如何使用查询元素树findall Email 给定以下 xml