使用Python ElementTree / ElementInclude和xpointer访问包含的XML文件

GKontos

我有一个“ main.xml”文件,其中包括2个“ sub_x.xml”文件。包含行使用“ xpointer”仅指向/包含include xml的特定标签。当我使用ElementTree确定此方法是否正确运行时,它表明整个“ sub” xml文件都包括在内,而不仅仅是我想要的标签。我不确定是否正确使用了xpointer或ElementTree或ElementInclude不支持此功能。这些是文件:

------'main.xml'--------

`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo xmlns:xi="http://www.w3.org/2001/XInclude">
    <xi:include href="sub_1.xml" xpointer="xpointer(//ModelInfo/Model)" parse="xml" />
    <xi:include href="sub_2.xml" xpointer="xpointer(//ModelInfo/Model)" parse="xml" />  
</ModelInfo>`

-------'sub_1.xml'------

`<?xml version="1.0" ?>
<ModelInfo>
  <Model ModelName="glow">
    <Variables>
     <Variable Alias="glow_val" Input="False" Output="True" />
    </Variables>
  </Model>
</ModelInfo>`

-------'sub_2.xml'------

`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo>
  <Model ModelName="sirpwr_b_supply8v1">
   <Variables>
    <Variable Alias="sirpwr_a_supplyecu_Snsr8vIstat" Input="True" Output="False" />
   </Variables>
  </Model>
</ModelInfo>`

我希望“ main.xml”在ElementTree中显示为:

`<?xml version='1.0' encoding='utf-8'?>
<ModelInfo xmlns:xi="http://www.w3.org/2001/XInclude">
  <Model ModelName="glow">
    <Variables>
     <Variable Alias="glow_val" Input="False" Output="True" />
    </Variables>
  </Model>
  <Model ModelName="sirpwr_b_supply8v1">
    <Variables>
     <Variable Alias="sirpwr_a_supplyecu_Snsr8vIstat" Input="True" Output="False" />
     <Variable Alias="sirpwr_b_supply8v1_qstat" Input="False" Output="True" />
   </Variables>
   </Model>
</ModelInfo>`

我正在运行的用于加载XML文件和测试的脚本是:

`tree = ElementTree.parse('main.xml')
root = tree.getroot()
ElementInclude.include(root)
for element in root:
    print element.tag`

xpointer不起作用,因为正在从“ sub_x” xml文件复制“ ModelInfo”。

z

ElementInclude不支持所有XInclude。xpointer上属性<include>元素将被忽略。

它确实可以按照您想要的方式使用lxmlxinclude()方法来工作:

from lxml import etree 

tree = etree.parse('main.xml')
tree.xinclude()
print etree.tostring(tree)

请注意,XPointerxpointer()方案从未达到W3C Recommendation的地位(它仍然只是一个工作草案)。它已在libxml2(lxml后面的C库)中实现,但几乎没有其他地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python ElementTree / ElementInclude和xpointer访问包含的XML文件

来自分类Dev

使用Python ElementTree解析XML

来自分类Dev

使用ElementTree修改XML

来自分类Dev

使用ElementTree解析XML

来自分类Dev

使用ElementTree修改XML文件

来自分类Dev

使用ElementTree修改XML文件

来自分类Dev

使用ElementTree的递归XML解析python

来自分类Dev

使用ElementTree Python获取检索XML属性

来自分类Dev

使用python的ElementTree处理xml子对象

来自分类Dev

在Python中使用ElementTree从XML提取数据

来自分类Dev

使用Python ElementTree从XML中提取值

来自分类Dev

使用xml子对象,Python中的ElementTree

来自分类Dev

使用elementtree解析xml网站

来自分类Dev

使用elementtree解析xml站点

来自分类Dev

刷新Python的ElementTree中的文件

来自分类Dev

Python 2.5:XML中的ElementTree和UML

来自分类Dev

使用Python和ElementTree在XML中搜索变量属性

来自分类Dev

Python ElementTree

来自分类Dev

Python:使用 ElementTree 访问 WaterML (xml) 文件中嵌套子项的值

来自分类Dev

使用 Python xml.etree.ElementTree 遍历 XML 树的问题

来自分类Dev

如何使用ElementTree递归遍历Python中的XML标签?

来自分类Dev

使用ElementTree在Python中解析XML-findall

来自分类Dev

如何使用ElementTree在python中制作xml树的副本?

来自分类Dev

使用python ElementTree解析XML:ParseError:标记不匹配

来自分类Dev

Python-使用ElementTree解析具有重复标签的XML

来自分类Dev

使用Python ElementTree从xml文档中提取文本

来自分类Dev

使用python中的ElementTree删除特定的xml标签

来自分类Dev

使用elementtree遍历Python中子标记的XML子标记

来自分类Dev

如何使用Python elementTree提取xml数据中的特定元素

Related 相关文章

热门标签

归档