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

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解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

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

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

    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文档加载到内存中,构建一个树形结构,允许开发者通过节点...

    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解析是处理XML数据的关键步骤,DOM和SAX是两种主要的解析方式,各有优缺点。Java提供了强大的XML处理库,使得在Java项目中使用XML变得简单高效。无论是解析配置文件、交换数据还是构建复杂的XML结构,理解...

Global site tag (gtag.js) - Google Analytics