python xml.etree.Element 在处理含有namespace的xml文件时写入会产生ns0,如何使这个产生出来

cywin 2014-06-19 12:58:37
例如:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>

如何使用xml.etree.ElementTree 去解析这个xml字符串并写入到一个文件内容不变不会成为下面的格式:

<ns0:web-app version="2.5"
ns1:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:ns0="http://java.sun.com/xml/ns/javaee"
xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance">
<ns0:/web-app>
...全文
1184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_Third_Wave 2014-06-24
  • 打赏
  • 举报
回复
__future__ 模块看下,没有的话就没有办法了,升级python
cywin 2014-06-24
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:
看文档,查找'namespace',找到'register_namespace',尝试,google遇到的错误... (其实直接google好像更快,但前面几步再google不起作用的时候会很有用,所以最好养成这样的习惯)

In [16]: import xml.etree.ElementTree as ET

In [17]: ET.register_namespace('', "http://java.sun.com/xml/ns/javaee") #这一步必须在parse之前做

In [18]: ET.register_namespace('xsi', "http://www.w3.org/2001/XMLSchema-instance")

In [19]: tree = ET.parse('/tmp/test.xml')

In [20]: tree.write('/tmp/output.xml', encoding="utf-8", xml_declaration=True,  method='xml')

In [21]: !cat /tmp/output.xml
<?xml version='1.0' encoding='utf-8'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
这个是在python2.7之后的版本中才有的功能。如果是在python2.6呢,该怎么做?
panghuhu250 2014-06-19
  • 打赏
  • 举报
回复
看文档,查找'namespace',找到'register_namespace',尝试,google遇到的错误... (其实直接google好像更快,但前面几步再google不起作用的时候会很有用,所以最好养成这样的习惯)

In [16]: import xml.etree.ElementTree as ET

In [17]: ET.register_namespace('', "http://java.sun.com/xml/ns/javaee") #这一步必须在parse之前做

In [18]: ET.register_namespace('xsi', "http://www.w3.org/2001/XMLSchema-instance")

In [19]: tree = ET.parse('/tmp/test.xml')

In [20]: tree.write('/tmp/output.xml', encoding="utf-8", xml_declaration=True,  method='xml')

In [21]: !cat /tmp/output.xml
<?xml version='1.0' encoding='utf-8'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧