
<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中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)