奇怪的 lxml 行为

2024-01-31

我手动创建 xml,然后尝试使用 xsd 方案验证它。验证一开始没有通过,但如果我将 xml 转换为字符串并返回 - 那么新的 xml 将通过验证。

from lxml import etree

xsd = etree.fromstring("""
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="some_namespace">
    <element name="el"></element>
</schema>""")
schema = etree.XMLSchema(xsd)

xml1 = etree.Element('el', nsmap={None: "some_namespace"})
xml2 = etree.fromstring(etree.tostring(xml1))

schema.assertValid(xml2)  # this passes
schema.assertValid(xml1)  # this fails

我看到 xml1 和 xml2 有不同的标签:

print xml1.tag  # --> el
print xml2.tag  # --> {some_namespace}el

但为什么xml1和xml2会有这样的差异呢?看起来他们应该是一样的。


在这里您创建一个el元素(无命名空间):

xml1 = etree.Element('el', nsmap={None: "some_namespace"})

Using a nsmap参数不将元素绑定到命名空间;它只是提供序列化的映射。

When etree.tostring(xml1)执行后,序列化行为“开始”。当序列化结果被解析后,xml2 is an {some_namespace}el元素而不是el.

要使其正常工作,请将行更改为:

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

奇怪的 lxml 行为 的相关文章

随机推荐

  • Java - 线程、Swing 和 ServerSocket

    我知道我知道 已经有一百万个关于这个问题的问题和答案无处不在 有大量关于它的非常详细的文章 以及几种类型的示例 我花了几个小时阅读有关它的内容 但这并没有解决问题 我问这个的原因是因为我仍然不明白我需要做什么 因为我的代码仍然无法工作 我了
  • Powershell 参数路径的值为 NULL

    我开发了一个 PS1 文件 它将负责基于服务器列表应用 SQL Server 补丁 因此 它将读取一个文本文件 其中包含我需要修补并应用修补程序的所有服务器 我决定使用 PARAM 作为 源文件夹 我将在其中获取服务器列表并记录输出 目标文
  • 替换 CSV 第一列中的数据

    我有一个包含许多列的 CSV 第一列中的数据是日期 但格式错误 我可以仅选择第一列并重新格式化日期 但我无法弄清楚如何将新数据保存到现有 CSV 而不覆盖所有其他数据 File File csv Content Get Content Fi
  • 新的Google Play控制台:在哪里上传mapping.txt?

    我不知道在新的 Google Play 管理中心中将mapping txt 上传到哪里 要上传反混淆 打开 Play 管理中心 选择一个应用程序 在左侧菜单中 选择 发布 gt 应用程序包资源管理器 选择 下载 选项卡 然后向下滚动到 资产
  • 将单元格中的值范围转换为逗号分隔列表

    我可以在单元格 B1 中使用一个公式来查看 A1 并创建一个基于逗号的列表吗 所以下面我可以输入 A1 B1是一个公式 这可能吗 我会让 A1 始终遵循与 XXX XXX 范围相同的格式 TABLE A Input B Result 1 1
  • 网站图标-MVC3 ASP.NET

    favicon ico 需要什么 我正在尝试使用 MVC 错误处理 但它抱怨文件丢失 如何摆脱此错误 Thanks 前往RegisterRoutes的方法全局 asax cs文件 并将其添加为第一行之一 routes IgnoreRoute
  • MATLAB脚本代码和函数代码在同一个文件中? [复制]

    这个问题在这里已经有答案了 可能的重复 在 MATLAB 中 我可以在同一个文件中包含脚本和函数定义吗 https stackoverflow com questions 5363397 in matlab can i have a scr
  • 通过网络(FTP、HTTP、RSync 等)传输文件的最快方法是什么[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图找出通过网络在两个系统之间传输大量数据的最佳方法 我目前正在研究 FTP HTTP 或 RSync 我想知道哪一个最快 我在网上寻找
  • 获取 SQLalchemy Instrumentedattribute 的值

    我怎样才能获取a的值InstrumentedAttributeSQLalchemy 中的对象 Pdb ResultLine item reference 1
  • 如何删除所有神秘的“index on”和“WIP on”提交?

    我刚刚被要求修复我的应用程序中的一个错误 我收藏了我当前的工作并查看了我的最新版本标签 我立即注意到这是一个错误 因为 Git 消息告诉我我的提交不会被保存 所以我检查了master反而 但在我这样做之前 我已经打开了我的藏品 重新藏起来的
  • 在一个事务 SQL 中删除和插入

    我只是想问封装到事务时是否总是第一个查询被执行 例如我有50万条记录要删除 50万条记录要插入 是否有可能锁定 实际上我已经测试了这个查询并且它工作正常 但我想确定我的假设是否正确 注意 这将删除并插入相同的记录 并可能更新其他列 BEGI
  • 下拉选择控件 - Windows 8 Metro - XAML

    我想要如下图所示的下拉菜单 我不知道如何得到它们 我想这些是某种组合框 但我不确定 任何人都可以帮助我并提供 xaml 代码吗 谢谢 我想你正在寻找组合框 Windows 8 商店控件列表 MSDN http msdn microsoft
  • ng-click 在 MVC 部分视图中不起作用

    我有一个使用 angular js 和 MVC 的单页面应用程序 该页面调用两个部分视图 Menu Accounts 菜单加载良好 当用户单击菜单项时 我使用角度 ng click 调用另一个部分视图 并将部分视图结果注入主页中 问题是我的
  • LAMP 显示 php 错误

    我已经安装了开发人员的 LAMP 服务器并在 php ini 上进行了更改 显示错误打开 显示启动错误打开 但它没有显示任何错误 甚至没有一点警告 问题出在哪里 出了什么问题 请记住 大多数系统都有两个 php ini 文件 一个用于网络服
  • 在 matplotlib 中绘制黑白二值图

    我使用 python 来模拟一些自动化模型 并在 matplotlib 的帮助下生成如下所示的图 我目前正在使用以下命令进行绘图 ax imshow self g cmap map interpolation nearest where s
  • 使用maven scm插件提交多个文件

    我想使用 maven scm 插件 v1 9 4 在不同的文件夹中 git 提交两个文件 例如 abc p json and xyz p json 我不想提交任何其他文件 例如other p json 根据文档 http maven apa
  • Ninject:将多种类型绑定到同一个单例实例

    interface IService
  • 将 JSON 数组发布到 Android 中的 Web 服务

    我在执行一项相当简单的任务时遇到了一些问题 我只需要一个 JSON 数组 其中包含一个 JSON 对象即可发布到我的 Web 服务 整个 URL 请求的格式需要如下所示 http www myserver com myservice php
  • Instagram 用户对象中每个个人简介的空字符串

    我已经尝试过 通过 Python 中的 API 库以及 Instagram 和 apigee com 提供的 API 控制台 我使用请求 GET tags tag name media recent 我试过ferrari tag 所有结果都
  • 奇怪的 lxml 行为

    我手动创建 xml 然后尝试使用 xsd 方案验证它 验证一开始没有通过 但如果我将 xml 转换为字符串并返回 那么新的 xml 将通过验证 from lxml import etree xsd etree fromstring