将一个 XML 包含在另一个 XML 中并使用 python 解析它

2024-04-20

我想将一个 XML 文件包含在另一个 XML 文件中并用 python 解析它。我正在尝试通过 Xinclude 来实现它。有一个 file1.xml 看起来像

<?xml version="1.0"?>
<root>
  <document xmlns:xi="http://www.w3.org/2001/XInclude">
     <xi:include href="file2.xml" parse="xml" />
  </document>
  <test>some text</test>
</root>

和 file2.xml 看起来像

<para>This is a paragraph.</para>

现在在我的 python 代码中我尝试像这样访问它:

from xml.etree import ElementTree, ElementInclude

tree = ElementTree.parse("file1.xml")
root = tree.getroot()
for child in root.getchildren():
    print child.tag

它打印 root 的所有子元素的标签

document
test

现在,当我尝试直接打印子对象时

print root.document
print root.test

它说根没有名为 test 或 document 的子项。那么我该如何访问 file2.xml 中的内容呢?

我知道我可以使用如下模式从 python 访问 XML 元素:

    schema=etree.XMLSchema(objectify.fromstring(configSchema))
    xmlParser = objectify.makeparser(schema = schema)
    cfg = objectify.fromstring(xmlContents, xmlParser)
    print cfg.elemetName # access element

但由于这里一个 XML 文件包含在另一个文件中,所以我很困惑如何编写架构。我该如何解决它?


不知道为什么要使用 XInclude,但在另一个文件中包含 XML 文件是 SGML 和 XML 的基本机制,无需 XInclude 也可以实现,简单如下:

<!DOCTYPE root [
  <!ENTITY externaldoc SYSTEM "file2.xml">
]>
<root>
  <document>
    &externaldoc;
  </document>
  <test>some text</test>
</root>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将一个 XML 包含在另一个 XML 中并使用 python 解析它 的相关文章

随机推荐

  • 使用 Eclipse 处理 PHP 中的阿拉伯字符串

    我目前正在致力于一个网站的本地化 该网站最初只有英文 第三方公司进行了翻译 并向我们提供了包含翻译的 Excel 文件 我成功地将其转换为可以在视图中使用的 PHP 数组 我正在使用 Windows 版 Eclipse 来编辑 PHP 文件
  • 闭包可能比当前函数的寿命更长

    我刚刚开始学习 Rust 为此 我正在用 Rust 重写我的 C 项目 但最大的问题是闭包的生命周期等 我创建了一个绝对最小的问题场景及以下 use std sync Arc use std cell RefCell Cell struct
  • 计算 3D 中两点之间的距离

    我的任务是创建主类 在其中将任意点的值初始化为 0 0 0 并且能够单独访问和改变所有三个值 x y z 为此 我使用了 getter 和 setter 我的下一个任务是在我的主类中创建一个方法 我将其称为 distanceTo 来计算两点
  • (更改)Angular2 中的事件钩子

    我知道 改变 event Binding在 angular2 中 但我很惊讶为什么我的代码没有按预期工作 我的代码在这里 http plnkr co edit 9pSWSeqBc5oaSAtsfwNY p preview http plnk
  • 为什么 Bootstrap 3 Collapse 与双击时的复选框状态不同步?

    根据这个问题 当复选框被选中时 Twitter Bootstrap 3 崩溃 https stackoverflow com questions 22480524 twitter bootstrap 3 collapse when chec
  • $scope.$on 在角度服务中的 $rootScope.$broadcast 之后不触发

    这可能是重复的问题 但我找到的解决此问题的方法在我的情况下不起作用 这就是我发布该问题的原因 我已经关注了service appRoot service MyService function rootScope var Messenger
  • Win32 API C++ 菜单栏

    我正在尝试学习一些基本的 win32 api 我看到将项目添加到菜单栏教程中提到使用类似以下内容 hMenubar CreateMenu hMenu CreateMenu AppendMenuW hMenu MF STRING IDM FI
  • Vaadin 更改默认会话过期通知?

    瓦丁7 6 2 如何更改默认的会话过期通知 消息和通知类型 要更改会话过期消息 您需要创建自己的SystemMessagesProvider 您在其中定义它 例如 在 Servlet 部署中 您可以执行以下操作 WebServlet url
  • Hibernate 3.6:SQL 方言中的 registerFunction 不起作用

    我放弃并询问社区 在我的项目中 我使用 Hibernate 3 6 4 Final 和自定义 sql 方言 public class ServiceAppMySQL5InnoDBDialect extends MySQL5InnoDBDia
  • Bash 脚本使用 FreeTDS 建立连接、交互、不退出(只是挂起)

    我在脚本中使用 FreeTDS 将记录插入 MSSQL 数据库 这USEandINSERT命令有效 但是exit命令没有 它挂起 我尝试过重定向stdoutbutcat抱怨 我想我会用Expect http www nist gov mel
  • 未能向 master 发送加入请求

    我使用的是elasticsearch版本1 3 0 重启数据节点后 无法检测到主节点 我收到错误failed to send join request to master 在错误日志中 app101 dGRBqTFTQfae76IFCjsM
  • strtolower() 用于 unicode/多字节字符串

    我的页面中有一些非英语 外语文本 但是当我尝试将其变为小写时 它的字符会转换为包含问号的黑色菱形 a echo b strtolower a returns 我已在元标记中设置了字符集 但这并没有解决问题 我该怎么做才能将字符串转换为小写而
  • vim 中项目列表的智能硬包装

    我喜欢 vim 而且我真的很喜欢在写文字时将它们硬包装起来 Tim Pope 的 markdown 插件很棒 并且构建得当我尝试硬包装项目列表时它可以正确完成工作 好吧 这就是我所说的正确完成工作的意思 here I write a lon
  • iPhone 就像在 Silverlight ListBox 上滚动一样

    我需要一个具有类似 iPhone 功能的 Silverlight 列表框 也就是动画滚动 点击拖动滚动 在鼠标释放事件之后 滚动将根据拖动的 速度 继续进行一段时间 我搜索过 没有找到提供此功能的控件供应商 那么问题是我应该如何构建它 我需
  • 如何使用 rvest R 从谷歌新闻中获取头条新闻?

    我想使用 R 中的 rvest 从谷歌新闻中获取头条新闻 到目前为止我已经做到了这一点 library rvest url read html https www google com search hl en tbm nws authus
  • 根据其他字段 javax.validation 的条件进行选项的字段验证

    如果存在另一个字段 我需要执行字段验证 它可以是值之一 import javax validation class Person NotBlank private String name private Long groupId Valid
  • Windows 在 PATH 中搜索可执行文件的相对顺序是什么?

    如果我有a com a cmd a bat and a exe我的文件中的 PATH 如果我只调用该命令 Windows 会选择哪一个a 这是微软官方指定的吗 我只是想包裹我的gvim exe可执行文件 n 但是我的gvim bat似乎既不
  • Elasticsearch 过滤器/计算嵌套字段

    我有带有嵌套字段的文档 如下所示 results id 1234 name asdf id 5678 name jkl ip 1 2 3 4 嵌套字段的映射如下所示 results type nested properties id typ
  • PDO 最后插入 ID 总是正确的吗?

    我有以下代码 我想问的是这个 想象一下 当两个人同时加载页面时 是否存在其他人的查询在检索到最后一个 ID 之前插入 从而混淆 ID 的危险 不 这种情况是不可能的 方法 db gt lastInsertId 返回此数据库连接的最后插入的
  • 将一个 XML 包含在另一个 XML 中并使用 python 解析它

    我想将一个 XML 文件包含在另一个 XML 文件中并用 python 解析它 我正在尝试通过 Xinclude 来实现它 有一个 file1 xml 看起来像