首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止ElementTree从元素中删除命名空间

停止ElementTree从元素中删除命名空间
EN

Stack Overflow用户
提问于 2017-10-20 00:41:47
回答 1查看 310关注 0票数 0

我正在解析的xml文件中的一些元素有它们自己的xmlns属性,但是每当我解析并写回文件时,xmlns就会被删除,取而代之的是我会得到一个ns3:前缀,并在顶部添加一个新的名称空间。

我正在读取的XML文件头:

代码语言:javascript
复制
<oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#windows http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/windows-definitions-schema.xsd">

我得到的输出的头部:

代码语言:javascript
复制
<oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:ns3="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#windows http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/windows-definitions-schema.xsd">

我的命名空间声明:

代码语言:javascript
复制
ET.register_namespace('', "http://oval.mitre.org/XMLSchema/oval-definitions-5")
ET.register_namespace('oval', "http://oval.mitre.org/XMLSchema/oval-common- 5")
ET.register_namespace('xsi', "http://www.w3.org/2001/XMLSchema-instance")
ET.register_namespace('xsi:schemaLocation', "http://oval.mitre.org/XMLSchema/oval-common-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5 http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#windows http://oval.mitre.org/language/download/schema/version5.8/ovaldefinition/complete/windows-definitions-schema.xsd")

我想要的:

代码语言:javascript
复制
<registry_state xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows" id="oval:mil.disa.fso.windows:ste:397100" version="2" comment="Reg_Dword type and value equals 0">

我现在得到的是:

代码语言:javascript
复制
<ns3:registry_state comment="Reg_Dword type and value equals 0" id="oval:mil.disa.fso.windows:ste:397100" version="2">

如何才能将xmlns=属性返回到元素中并从文档头中取出?

EN

回答 1

Stack Overflow用户

发布于 2017-10-20 01:00:35

oval:ns3:是名称空间前缀,而不是名称空间。名称空间前缀本身是无关紧要的;只有通过它们绑定到的名称空间(例如http://oval.mitre.org/XMLSchema/oval-definitions-5#windows),它们才能获得意义。任何兼容的XML处理程序都不会关心特定的名称空间前缀(只关心它们绑定到的名称空间URI),您和您编写的软件也不应该关心。

类似地,通过名称空间前缀控制默认名称空间与显式名称空间的使用也是没有区别的(假设保持等价性wrt是默认名称空间对后代元素的继承)。

另请参阅:Why does xml package modify my xml file in Python3?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46834866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档