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)混合物的物理性质“全部获取了,就这么简单。

上一篇下一篇

猜你喜欢

热点阅读