为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ElementTree 在 Python 3 中处理 XML 命名空间

使用 ElementTree 在 Python 3 中处理 XML 命名空间

暮色呼如 2021-11-02 17:01:01
我有一个带有一些错误命名空间的输入 XML。我试图用 ElementTree 修复它们但没有成功示例输入:(这里 ns0: 可以是 ns:、p:、n: 等等……)<ns0:Invoice xmlns:ns0="http://invoices.com/docs/xsd/invoices/v1.2" version="FPR12">  <InvoiceHeader>    <DataH>data header</DataH>  </InvoiceHeader>  <InvoiceBody>    <DataB>data body</DataB>  </InvoiceBody></ns0:Invoice>需要的输出文件:(根中的命名空间必须没有前缀,并且一些内部标记声明为 xmlns="")<Invoice xmlns:"http://invoices.com/docs/xsd/invoices/v1.2" version="FPR12">  <InvoiceHeader xmlns="">    <DataH>data header</DataH>  </InvoiceHeader>  <InvoiceBody xmlns="">    <DataB>data body</DataB>  </InvoiceBody></Invoice>我尝试如下更改根命名空间,但生成的文件未更改import xml.etree.ElementTree as ETtree = ET.parse('./cache/test.xml')root = tree.getroot()root.tag = '{http://invoices.com/docs/xsd/invoices/v1.2}Invoice'xml = ET.tostring(root, encoding="unicode")with open('./cache/output.xml', 'wt') as f:    f.write(xml)相反,当尝试与changing root.tag  = 'Invoice'它产生一个完全没有命名空间的标签请让我知道我是否犯了任何错误,或者我应该切换到另一个库或尝试用正则表达式替换字符串
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号