python 读取xml时文本节点显示元素节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 读取xml时文本节点显示元素节点相关的知识,希望对你有一定的参考价值。
很简单的xml,maxid应该是个文本节点
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
</catalog>
但是执行时显示是元素节点
import xml.dom.minidom
dom= xml.dom.minidom.parse('c:/12345.xml')
root = dom.documentElement
for rt in root.childNodes:
if rt.nodeName=='maxid':
print rt.nodeType
print rt.nodeName
控制台显示:
1
maxid
1是元素节点,不能取得值,求解
这里的4是作为maxid的子字节点存在的,所以你需要再遍历一层
dom = xml.dom.minidom.parse(\'c:/12345.xml\')
root = dom.documentElement
for rt in root.childNodes:
if rt.nodeName == \'maxid\':
for node in rt.childNodes:
print node.nodeValue
print node.data
如果你确定这里只有一个maxid,你也可以
import xml.dom.minidomdom = xml.dom.minidom.parse(\'c:/12345.xml\')
maxid_nodes = dom.getElementsByTagName(\'maxid\')
print maxid_nodes[0].firstChild.data
希望采纳。
递归读取所有元素内容。
import xml.dom.minidomdef getNodeText(ele):
if ele.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:
for e in ele.childNodes:
getNodeText(e)
elif ele.nodeType in (xml.dom.minidom.Node.TEXT_NODE,xml.dom.minidom.Node.CDATA_SECTION_NODE):
print([ele.nodeValue.strip()])
dom= xml.dom.minidom.parse('t.xml')
root = dom.documentElement
getNodeText(root)
XML DOM
XML DOM可以类比于HTML DOM,详见:HTML DOM
1、DOM节点
- 整个文档是一个文档节点
- 每个XML元素是一个元素节点
- 包含在XML元素的文本是文本节点
- 每一个XML属性是一个属性节点
- 注释是注释节点
2、获取XML DOM对象
此处参考:Ajax
3、XML DOM属性
- nodeName 节点名称
- nodeValue 节点值
- parentNode 父节点
- childNodes 子节点
- attributes 属性节点
4、XML DOM方法
- getElementsByTagName()
- appendChild() 插入子节点
- removeChild() 删除子节点
实例:
note.xml
<message>
<note id="010">
<to>fftu</to>
<from>per_1</from>
<info>info_1</info>
</note>
<note id="011">hahaha
<to>jiao</to>
<from>per_2</from>
<info>info_2</info>
</note>
</message>
main.js
function loadXmlDoc(fileName){ if(window.XMLHttpRequest){ var xmlhttp = new XMLHttpRequest(); } xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ var xmlDoc = xmlhttp.responseXML; var di_1 = document.getElementById("di_1"); //获取文本节点"hahaha" di_1.innerHTML = xmlDoc.getElementsByTagName("note")[1].childNodes[0].nodeValue; //获取文本节点"jiao" di_1.innerHTML = xmlDoc.getElementsByTagName("note")[1].childNodes[1].childNodes[0].nodeValue; } } xmlhttp.open("GET", "./note.xml", true); xmlhttp.send(); }
注意:元素节点本身并不包含文本,元素节点下的文本节点包含文本
以上是关于python 读取xml时文本节点显示元素节点的主要内容,如果未能解决你的问题,请参考以下文章