python解析xml一些心得体会
2019-11-27 本文已影响0人
taking_off
本文仅针对使用elementtree解析xml的情况。
1、使用.text获取某个标签文本的时候,一定注意判断返回值是不是None。因为None是python里一个很特殊的变量,拥有独特的类型NoneType,无法视同字符串进行操作。
2、使用find获取到某个节点,实际获取的是这个节点所包含的所有子节点,可以通过数组索引获取指定的子节点。例如
newNode = root.find('tagname')
for i in range(len(newNode):
txt = newNode[i].text
3、遇到一些结构比较奇葩的xml的时候,比如
<title>二氧化碳(CO<sub>2</sub>)和纯水(H<sub>2</sub>O)混合物的物理性质</title>
可以通过循环titleNode的各个子节点获取text,然后拼接起来,结果发现fulltext的内容是:二氧化碳(CO2)和纯水(H2
</sub>后的内容取不到,这时,就要用.tail来获取节点后的小尾巴。titleNode[1].tail的值就是"O)混合物的物理性质"
4、如果我要取某个节点下的全部文字,而忽略掉其中的修饰节点,有没有更简单的方法?答案是,有的。
使用itertext()方法。
还是这个例子:<title>二氧化碳(CO<sub>2</sub>)和纯水(H<sub>2</sub>O)混合物的物理性质</title>
我只要用这个方式:fulltext = ''.join(titleNode.itertext())就可以把”二氧化碳(CO2)和纯水(H2O)混合物的物理性质“全部获取了,就这么简单。