如何使用Python和xml.etree.ElementTree解析xml文件获取其节点

如何使用Python和xml.etree.ElementTree解析xml文件获取其节点,第1张

<xml version = "10" encoding = "utf-8">

<root>

<body name="lyc">

<age>110</age>

</body>

<body name = "l" age = "10">

</body>

</root>

######################

#coding=UTF8

from xmletree import ElementTree

#xmlText = open("xmltxt")read()

#root = ElementTreefromstring(xmlText)

root = ElementTreeparse("xmltxt")

bodys = rootgetiterator("body")

#getiterator方法获取

print "getiterator"

print bodys

print dir(bodys[0])

print "attrib:",bodys[0]attrib

print "tag:",bodys[0]tag

print "text",bodys[0]text

#getchildren方法获取

print "getchildren"

children = bodys[0]getchildren()

print children

print "attrib:",children[0]attrib

print "tag:",children[0]tag

print "text:",children[0]text

#find

print "find"

children = rootfind("body")

print children

print "attrib:",childrenattrib

print "tag:",childrentag

print "text:",childrentext

#findall 

print "findall"

children = rootfindall("body")

print children

print "attrib:",children[0]attrib

print "tag:",children[0]tag

print "text:",children[0]text

TiXmlDocumen pXMLDoc = new TiXmlDocument("");

if (pXMLDoc != NULL)

{

pXMLDoc->LoadFile();

}

TiXmlNode pNode = pXMLDoc->FirstChild(""); // 为根节点名称

// 获得元素

TiXmlElement pXmlElement = pNode->ToElement();

// 获得元素的属性

string strAttrib = pXmlElement->Attribute("name") // name为根元素的属性

// 获得元素的text

string strText = pXmlElement->GetText();

// 获得下一个指定名称的元素,一般用于遍历同类元素,多用于while循环中

pXmlElement= pXmlElement->NextSiblingElement("nextElement");

from xmletree import ElementTree

str_ = '' #文件中的xml字符串

xml_obj = ElementTreefromstring(str_)

然后通过对xml_obj进行 *** 作,xml_obj本身也是一个xml节点。

xml_objgetchildren() 获取根节点的子节点列表

xml_objfindall(node_name) 搜索xml_obj节点下名为node_name的所有节点

xml_objtag 节点的标签

xml_objtext 节点的文本信息 ,本例中可以获得K这个文本。

xml_objtail 节点尾部的文本信息,本例中获取Channel Regulator KCR1 Suppresses Heart Rhythm by Modulating the Pacemaker Current I  

就需要搜索到标签为sup的节点,然后取节点的tail文本获得。

一、在Android应用中的XML文件来源

1、本地xml文件

本地XML文件可以放在应用根目录assets文件夹、res/xml、res/raw、SDcard卡、应用的data目录等;

除res/xml可直接通过getXml(int id)获取XML文档,返回一个解析器对象(XmlResourceParer:XmlResourceParer是XmlPullParser的子类),其它位置情况都可以获取XML文档,返回一个Inputstream对象,进行读取数据,获取方法分别如下:

a在res/xml目录下(推荐使用):

[java] view plaincopy

XmlResourceParser xmlParser = thisgetResources()getXml(RxmlXXX);

b在res/xml、res/raw目录下:

[java] view plaincopy

InputStream inputStream = thisgetResources()openRawResource(RxmlXXX);

c在assets文件夹下(本人测试发现通过此方法获取的XML文档不能带有首行:<xml version="10" encoding="utf-8">,否则解析报错,具体原因未查明,知道原因请回复交流):

[java] view plaincopy

InputStream inputStream = getResources()getAssets()open(fileName);

d在应用指定目录下(SDcard,应用data目录等):

[java] view plaincopy

// path路径根据实际项目修改,此次获取SDcard根目录

String path = EnvironmentgetExternalStorageDirectory()toString();

File xmlFlie = new File(path+fileName);

InputStream inputStream = new FileInputStream(xmlFlie);

2、通过url得到的xml文件

很多时候需要解析xml文件都用于客户端与服务器之间的数据交互,比如解析google天气预报信息,或自己项目内定的一些XML数据结构,其中通过URL,使用Default>

以上就是关于如何使用Python和xml.etree.ElementTree解析xml文件获取其节点全部的内容,包括:如何使用Python和xml.etree.ElementTree解析xml文件获取其节点、怎么将内存中字符串形式的XML文件赋给TiXmlDocument、在python中用ElementTree提取XML中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10088060.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存