`
gudujianxuehu
  • 浏览: 97121 次
  • 来自: ...
社区版块
存档分类
最新评论

xml解析的四种方式

阅读更多
xml解析的四种方式
待解析的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>admin</name>
<sex>123</sex>
<age>123</age>

<name>admin</name>
<sex>123</sex>
<age>123</age>

</user>
第一种方式sax 需要自己处理

文件1 package com.norteksoft.xml;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class ParseUserXml {


private static String XMLPATH ="";
private static ParseUserXml p=new ParseUserXml();

private ParseUserXml()
{


}
public static ParseUserXml getInstance()
{

XMLPATH =p.getClass().getResource("UserInfo.xml").getPath();
System.out.println("filePath:=="+XMLPATH);
System.out.println("\n");
return p;
}

public String pasrseXML() throws ParserConfigurationException,
SAXException, IOException

{
File xmlfile = new File(XMLPATH);
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
SAXParser saxParse = factory.newSAXParser();

// XmlHandler xmlHandler=new XmlHandler(user);

saxParse.parse(xmlfile, new SaxXmlHandler());

// System.out.println("返回值为:\n"+xmlHandler.getUser());

return null;
}
}

文件2

package com.norteksoft.xml;

import java.util.Stack;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxXmlHandler extends DefaultHandler

{
Stack tags=new Stack();

public void startDocument() throws SAXException
{
System.out.println("~~~~~~~~~开始解析文档~~~~~~~~~~~~~");
super.startDocument();
}

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
System.out.println("-----开始解析"+qName+"----");
tags.push(qName);
super.startElement(uri, localName, qName, attributes);
}

public void characters(char[] ch, int start, int length) throws SAXException
{
String value=new String(ch,start,length);
String tag=(String) tags.peek();
if(tag.equals("name"))
{
System.out.println("name="+value);
}
else if (tag.equals("age"))
{
System.out.println("age="+value);
}
else if(tag.equals("sex"))
{
System.out.println("sex="+value);
}
else
{
System.out.println(";value="+";"+tag+"没有匹配到!");
}
super.characters(ch, start, length);
}
public void endElement(String uri, String localName, String qName) throws SAXException
{
System.out.println("-----结束解析"+qName+"----");

tags.pop();

super.endElement(uri, localName, qName);
}
public void endDocument() throws SAXException
{
System.out.println("~~~~~~~~~结束解析文档~~~~~~~~~~~~~");
super.endDocument();
}
}
方式2:dom 解析

package com.norteksoft.xml;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class MyDomXmlReader
{
static User[] users;

public MyDomXmlReader()
{
super();

}

private static void parseXmlWithEception() throws ParserConfigurationException, SAXException, IOException
{
URL url=MyDomXmlReader.class.getResource("UserInfo.xml");

File file=new File(url.getPath());

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();

Document doc =builder.parse(file);

NodeList nodes=doc.getElementsByTagName("user");
users=new User[nodes.getLength()];
String name=null;
String age=null;
String sex=null;
System.out.println("begin");
for(int i=0;i<nodes.getLength();i++)
{
System.out.println("i===="+i+"-------");

NodeList nl=((Node)nodes.item(i)).getChildNodes();

for(int j=0;j<nl.getLength();j++)
{

System.out.println("j=="+j+"\n "+nl.item(j).getNodeName());
}
// String temp= ((Node)nodes.item(i)).getChildNodes().getLength()+";";

// System.out.println("temp====="+temp);

name=doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue();

// System.out.println("name="+name);

age=doc.getElementsByTagName("age").item(i).getFirstChild().getNodeValue();
// System.out.println("age="+age);

sex=doc.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue();
// System.out.println("sex="+sex);

users=new User(age,name,sex);


}
System.out.print("end");


}
public static void parseXml()
{
try
{
parseXmlWithEception();
}catch (Exception e)
{
e.printStackTrace();
}
}

public static User[] returnValue()
{
parseXml();
return users;
}


}

方式3: JDom

package com.norteksoft.xml;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class MyJDomXml
{

public MyJDomXml()
{
super();
}

public static void parseXmlThowException() throws JDOMException, IOException
{
URL url=MyJDomXml.class.getResource("UserInfo.xml");

File file=new File(url.getPath());

SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(file);

Element root = doc.getRootElement();

List allChildren = root.getChildren();

for(int i=0;i<allChildren.size();i++)
{
Element foo=(Element) allChildren.get(i);

System.out.println(foo.getName()+"==="+foo.getName());

System.out.println("name="+foo.getChild("name").getText());
System.out.println("age="+foo.getChild("age").getText());
System.out.println("sex="+foo.getChild("sex").getText());
}


}


public static void parseXml()
{
try {
parseXmlThowException();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


方式4 dom4j

package com.norteksoft.xml;

import java.io.File;
import java.net.MalformedURLException;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class MyDom4JXmlReader
{

public MyDom4JXmlReader()
{
super();

}

private static void parseXmlThrowException() throws MalformedURLException, DocumentException
{
String path=MyDom4JXmlReader.class.getResource("UserInfo.xml").getPath();

File f = new File(path);

SAXReader reader = new SAXReader();

Document doc = reader.read(f);

Element root=doc.getRootElement();

Element foo;

List list=root.elements();
for(int i=0;i<list.size();i++)
{

foo=(Element) list.get(i);
System.out.println("name="+foo.elementText("name"));
System.out.println("age="+foo.elementText("age"));
System.out.println("sex="+foo.elementText("sex"));


}
/*for(Iterator it= root.elementIterator("user");it.hasNext();)
{
foo=(Element) it.next();

System.out.println("name="+foo.elementText("name"));
System.out.println("age="+foo.elementText("age"));
System.out.println("sex="+foo.elementText("sex"));


}*/


}
public static void praseXml()
{

try {
parseXmlThrowException();
} catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
分享到:
评论

相关推荐

    xml四种解析方式

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。...在实际应用中,开发者应根据项目需求,权衡性能、易用性和资源消耗,选择最适合的XML解析方式。

    XML的四种解析方式

    XML的四种解析方式参考文档 自学者可以参考

    java解析XML的四种方式

    选择哪种XML解析方式取决于具体的应用场景和需求。如果需要处理小型到中型的XML文件,并且需要随机访问和修改文档内容,那么DOM是一个好选择。对于大型文件或者实时数据流处理,SAX是更好的选择。JDOM和DOM4J则在...

    XML的四种解析方式比较

    在Java中,处理XML有四种主要的解析方式:DOM、SAX、DOM4J和JDOM。每种方法都有其特性和适用场景,下面将详细对比和介绍这四种解析方式。 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML...

    C# XML解析方式

    ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`是一种高效的流式XML解析器,适用于处理大型XML文档或当只需要读取文档的部分内容时。 - **特点**: - **...

    xml解析文件的两种方式

    本文将详细介绍XML解析文件的两种主要方式:SAX(Simple API for XML)和DOM(Document Object Model)。 **1. DOM解析** DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    解析XML文件的四种方式整合

    本文将详细讲解四种解析XML文件的方法,旨在帮助初学者更好地理解和掌握XML处理技术。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个方法的优点...

    java解析xml四种方式完整项目

    JDOM是专门为Java设计的XML解析库,提供了与DOM类似的功能,但使用了更直观的Java API。JDOM比DOM更轻量级,且易于使用,适合小型到中型的XML处理任务。然而,由于它不遵循标准的DOM API,可能限制了与其他DOM兼容库...

    解析xml解析xml解析xml解析xml解析xml

    本篇文章将深入探讨XML解析的基本概念、解析方式以及在实际应用中的重要性。 一、XML的基本结构 1. 元素:XML文档的核心是元素,元素以尖括号 `和 `&gt;` 包裹,如 `&lt;element&gt;`。元素可以包含其他元素、属性和文本。...

    Java解析XML四种方式

    在进行XML解析时,除了选择合适的API,还应关注性能优化、错误处理和安全性。例如,避免使用可能导致内存溢出的DOM解析大文件,确保SAX和StAX的事件处理器设计得高效,以及防止XML注入攻击等安全问题。 总结,Java...

    XML的三种解析方式

    本篇文章将详细探讨XML的三种主要解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和PULL(Pull Parsing)。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构的文档对象...

    java解析xml的四种方式demo

    本篇将详细介绍Java解析XML的四种常见方法,帮助你更好地理解和应用这些技术。 1. DOM(Document Object Model)解析 DOM解析器将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。这种方式适合小型XML文件...

    xml常用四种解析方式优缺点的分析

    本文将深入探讨XML的四种常见解析方式——DOM、SAX、StAX和JDOM,以及它们各自的优缺点。 1. DOM(Document Object Model)解析器: DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点...

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    XML解析器示例

    在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这个强大的图形化编程环境中,XML解析器是处理和操作XML数据的关键工具。本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先...

    解析XML的三种方式

    XML(Extensible Markup Language)可拓展标记语言,它与HTML一样,都是SGML...在Android下有三种方式解析XML,分别为SAX、DOM、PULL;它们有各自的特点,在网络编程中会经常使用,根据实际情况选择哪一种解析方式。

    android xml三种解析方式

    本篇将详细探讨Android中的三种XML解析方式:DOM解析、SAX解析和Pull解析。 1. DOM解析(Document Object Model) DOM解析器会将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这种解析方式的优点是能够...

    XML解析技术研究XML解析技术研究

    XML解析技术主要有四种类型: 1. 面向文档的流式解析,如SAX(Simple API for XML)解析,是一种基于事件的解析方式。SAX采用推式解析,解析器读取文档并触发事件,通过回调函数将数据传递给应用程序。这种方式节省...

Global site tag (gtag.js) - Google Analytics