一、说明

python中我们经常借助xml.etree.ElementTree对xml进行处理,其中ElementTree.fromstring()将字符串格式化成et对象,ElementTree.tostring()将et对象转回字符串。

但ElementTree.tostring()转回字符串时,有可能会出现标签从<config>变为<ns0:config>或<s:config>变为<ns0:config>的情况,尤其在处理soap请求的时候。

二、处理办法

暂时还没搞清楚什么情况会变什么情况不会变,但处理办法就是使用ElementTree.register_namespace()注册命名空间。

直接使用stackoverflow的回答(https://stackoverflow.com/questions/8983041/saving-xml-files-using-elementtree):

从效果上个人理解为:

如果父标签的那堆xmlns中有这些url,那么如果其子孙标签中如果有“ows”这些前辍,要认为这些前辍是合法的不要去改变他们(即不要改成ns0等);第一个‘’表示空前辍。

另外注意两点:

一是那些url并不(一定)是什么存在标准规范的urlET也不会去访问这些url,url就是ET分析xml时当标志使用乱来也是可以的,只要要分析xml和register_namespace的url一致即可。

二是soap也是xml,所以ElementTree处理soap引起标签改变也同这里一样用register_namespace处理即可。

三、效果演示

直接ElementTree.fromstring()-ElementTree.tostring()引起标签自动添回ns0前辍如下:

ElementTree.fromstring()-ElementTree.tostring()前插入ET.register_namespace('', "http://www.ipc.com/ver10"),结果转回正常如下:

参考:

https://stackoverflow.com/questions/8983041/saving-xml-files-using-elementtree

https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.register_namespace

Python3 ElementTree.tostring()导致标签前辍变为ns0/ns1处理的更多相关文章

  1. ride.py在运行python3.×版本后导致无法运行及解决办法

    最近一直在自学python自动化,网上看到rf框架挺适合初学自动化测试,于是通过虫师的搭建了rf框架, 但是在使用过程中遇到了一个问题,在网上没有找到明确解决办法于是想到记录一下 之前为了搭建rf框架 ...

  2. Python3正则去掉HTML标签

    Python3正则去掉HTML标签 1.引用一段代码 import re html = '<pre class="line mt-10 q-content" accuse=& ...

  3. Python3获取豆瓣图书标签的前20本热门书籍(一)

    介绍 第一篇主要获取豆瓣的大分类.大分类下的具体分类以及具体分类下的前20本热门书籍,第二篇对获取的数据进行分析. 准备 Python3.6.requests.BeautifulSoup4 演示 代码 ...

  4. centos7安装python3.6后导致防火墙功能无法正常工作的解决办法

    问题:因为默认python版本被设置成了python3.6,而进行防火墙的指令操作频频报错. Jul 19 16:30:51 localhost.localdomain systemd[1]: Sta ...

  5. 解决Bootstrap布局注册表单input标签前增加必填项*提示与input框不在同一行问题

    注册表单部分代码如下: <form id="registForm" class="form-horizontal" action="${page ...

  6. Oracle数据库案例整理-Oracle系统执行时故障-断电导致数据文件状态变为RECOVER

    1.1      现象描写叙述异常断电.数据库数据文件的状态由ONLINE变为RECOVER. 系统显演示样例如以下信息:SQL>selectfile_name,tablespace_name, ...

  7. webservice因引用Oracle.DataAccess.dll导致发布前预编译不通过

    这个问题最初是什么问题已经忘了,虽然就在几小时前/

  8. python3的pickle导致乱码

    资料: http://www.cnblogs.com/pzxbc/archive/2012/03/18/2404715.html http://bbs.chinaunix.net/thread-419 ...

  9. <UL>中<li>标签前编号图片的简单调用

    <style type="text/css"> ul li{ list-style-type:none} .men ul{ background:url(http:// ...

随机推荐

  1. Codeforces 785 D. Anton and School - 2

    题目链接:http://codeforces.com/contest/785/problem/D 我们可以枚举分界点,易知分界点左边和右边分别有多少个左括号和右括号,为了不计算重复我们强制要求选择分界 ...

  2. .NET 使用中文编码

    在.Net Core中默认System.Text中不支持CodePagesEncodingProvider.Instance, System.Text.Encoding.CodePages.dll允许 ...

  3. config配置

    <?php /** * User: Eden * Date: 2019/3/30 * 共有内容 */ /** CREATE TABLE `tf_configs` ( `id` int(11) N ...

  4. SQL中 根据行号设置每行数据的排序数值

    根据行号自动把当前行号插入到某列中 实现排序 update tempTable set DisplayOrder = right( CAST(rownum as NVARCHAR),5) from(  ...

  5. springboot之启动方式

    我们在ideal中启动springboot项目时时不需要加载Tomcat容器的,直接在启动类启动就行了,原因是springboot项目中默认包含了内置Tomcat //springboot项目必须引入 ...

  6. maven配置环境变量失败解决办法

    配置maven路径什么的统统正确,最后测hi不成功.在网上搜索了好多资料方法都解不了 具体问题具体对待吧,如果有和我类似的小伙伴,可以尝试一下我的这个办法,在maven路径后面加/bin path变量 ...

  7. cyberduck的SSH登录

    1.通过配置SSH秘钥. 2.不点匿名(不要点匿名),如果非要填一个名字的话,你写root就行. 3.书签.

  8. 雷林鹏分享:C# 字符串(String)

    C# 字符串(String) 在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量.string 关键字是 System.String 类的 ...

  9. English trip V1 - B 18. Workplaces 工作地方 Teacher:Russell Key: do / does

    In this lesson you will learn to talk about workplaces. 课上内容(Lesson) My English Teacher name is Russ ...

  10. English trip M1 - AC9 Nosey people 爱管闲事的人 Teacher:Solo

    In this lesson you will learn to talk about what happened. 在本课中,您将学习如何谈论发生的事情. 课上内容(Lesson) # four “ ...