java中的xml解析,我们可以用dom解析,dom解析,dom解析把整个xml文档按照树形的缩进结构来解析的,一般,使用dom解析的时候,我们需要拿到dom解析器,并且拿到xm树的根节点,然后,在其中找到我们所需要的信息,当然,java中domApi给我们提供了非常方便的获取一些信息的接口:
dom解析流程,总结一下:
1,拿到dom解析器
->要用的接口是documentBuilder,documentBuilderFactory,Document;
2,获取dom根节点
->要用的接口是document.getDocumentElement();
3,获取我们需要的信息
->getElementByTagName();获取的是我们所需要的根节点下的所有信息
->getAttributes(),获取节点中的所有属性,他的返回值是NamedNodeMap,这时候,我们可以直接拿到相应的属性的值了,注意,dom的属性也是Node节点,通过getNodeValue()获取值;
-------------------------------------------------------dom获取信息,示例---------------------------------------------------------
=======获取dom
public Document getDocument(InputStream in)
{
Document dom = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
dom = builder.parse(in);
return dom;
} catch (Exception exp)
{
exp.printStackTrace();
} finally
{
// 必要的时候要用
}
return null;
}
========获取rootNode
public Element getRootNode(Document dom)
{
if (null == dom)
{
return null;
}
Element root = dom.getDocumentElement();
return root;
}
==========获取xml中的所有节点信息
private void xmlToString(Node node)
{
if (Node.ELEMENT_NODE == node.getNodeType())
{
NodeList list = node.getChildNodes();
int depth = list.getLength();
Node firstNode = list.item(0);
if (depth == 1 && firstNode.getNodeType() == Node.TEXT_NODE)
{
buffer.append(firstNode.getNodeValue());
buffer.append("\n");
}
else
{
buffer.append(node.getNodeName());
buffer.append("\n");
NamedNodeMap map = node.getAttributes();
if ("student".equals(node.getNodeName()))
{
buffer.append(map.getNamedItem("name").getNodeValue());
buffer.append("....");
buffer.append(map.getNamedItem("sex").getNodeValue());
buffer.append("....");
buffer.append(map.getNamedItem("age").getNodeValue());
buffer.append("....");
buffer.append("\n");
}
for (int i = 0; i < depth; i++)
{
xmlToString(list.item(i));
}
}
}
}
-----------------------------------Android平台pull解析-------------------------
andorid平台,我们解析xml可以用pull解析,pull解析采用的事件驱动解析,也就是,整个文档有start和end之分,每一个标记也有start之分,碰到一个标记的时候,我们只需要处理我们需要的数据,其他数据不用关心,示例如下:
public String pullParser(InputStream in)
{
try
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parsre = factory.newPullParser();
parsre.setInput(in, "utf-8");
int eventType = parsre.getEventType();
while(XmlPullParser.END_DOCUMENT != eventType)
{
switch(eventType)
{
case XmlPullParser.START_DOCUMENT:
{
//解析文档之前,需要的一些准备工作在这里做
break;
}
case XmlPullParser.START_TAG:
{
//获取我们关心的节点数据
if("ban".equals(parsre.getName()))
{
buffer.append("node..name..ban:"+parsre.getAttributeValue(0));
buffer.append("\n");
}
if("name".equals(parsre.getName()))
{
buffer.append("node..name..name:"+parsre.nextText());
buffer.append("\n");
}
break;
}
case XmlPullParser.END_TAG:
{
//处理一些要获取的数据节点的收尾工作
break;
}
}
eventType = parsre.next();
}
}
catch(Exception exp)
{
exp.printStackTrace();
}
return new String(buffer);
}
分享到:
相关推荐
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究
C# XML解析方式
xml解析xml解析xml解析例子xml解析xml解析xml解析xml解析xml解析xml解析xml解析
xml 解析几何 xml 解析几何 xml 解析几何
LabVIEW XML解析器示例, 包含xml加载,保存,解析等功能
XML解析、XML生成工具,灵活好用的XML解析器、封装接口简单易用
XML解析DEMOXML解析DEMOXML解析DEMOXML解析DEMOXML解析DEMO
使用dom4j解析XML,用于解析复杂XML,多层镶嵌XML,多层循环xml解析,解析完保存到实体类
minixml是适合嵌入式系统的xml解析器,支持dom
使用SAX DOM两种解析方式解析文件
用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件用于解析XML文件
利用jdom解析复杂xml到bean中: 1.依赖的jar:jdom-1.1.jar,commons-beanutils.1.8.3.jar,commons-logging-1.1.1.jar 2.用模板将xml解析 具体可以打断点运行主类:/xml_parse/src/com/vhl/main/StartMain.java,...
iphone开发之xml解析iphone开发之xml解析iphone开发之xml解析iphone开发之xml解析iphone开发之xml解析
xml的解析说明文档,看了后很容易上手xml的解析,分析的透彻简单。
tinyxml解析XML文件