当前位置:首页>开发>正文

java解析xml常用的几种方式、 Java读写文件的几种方法

2023-04-18 03:40:27 互联网 未知 开发

 java解析xml常用的几种方式、 Java读写文件的几种方法

java解析xml常用的几种方式、

各种方法都用过。现在总结一下。 经常记不住,要找资料。现在总结一下。> Everyday Italian Giada De Laurentiis 2005 30.00 ccccc Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003 39.95 package sort import javax.xml.parsers.DocumentBuilder import javax.xml.parsers.DocumentBuilderFactory import org.w3c.dom.Document public class D2 { /** * 直接使用DOM解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception{ DocumentBuilder sb = DocumentBuilderFactory.newInstance().newDocumentBuilder() Document root = sb.parse(D2.class.getClassLoader().getResourceAsStream("NewFile.xml")) System.out.println(root.getChildNodes().item(0).getNodeName()) } } package sort import javax.xml.parsers.SAXParser import javax.xml.parsers.SAXParserFactory import org.xml.sax.Attributes import org.xml.sax.SAXException import org.xml.sax.helpers.DefaultHandler import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl public class D { /** * 使用SAX解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactoryImpl.newInstance() SAXParser parser = factory.newSAXParser() parser.parse(D.class.getClassLoader().getResourceAsStream("NewFile.xml"), new DefaultHandler(){ @Override public void characters(char[] ch, int start, int length) throws SAXException { System.out.println("characters") } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("endDocument") } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub System.out.println("endElement") } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("startDocument") } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub System.out.println("startElement") } }) } } package sort import javax.xml.stream.XMLInputFactory import javax.xml.stream.XMLStreamReader public class D3 { /** * 使用XMLStream解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { XMLInputFactory xmlFactor = XMLInputFactory.newFactory() XMLStreamReader reader = xmlFactor.createXMLStreamReader(D3.class.getClassLoader().getResourceAsStream("NewFile.xml")) while(reader.hasNext()){ int point = reader.next() switch(point){ case XMLStreamReader.START_ELEMENT : System.out.println("start_element") case XMLStreamReader.END_ELEMENT : // do something... } } } } package sort import org.dom4j.Document import org.dom4j.io.SAXReader /** * 使用DOM4j XPATH解析XML (需要加入依赖jar文件) * @author zhoufeng * */ public class D4 { public static void main(String[] args) throws Exception{ SAXReader reader = new SAXReader() Document root = reader.read(D4.class.getClassLoader().getResourceAsStream("NewFile.xml")) /* 选择所有的cc节点 */ System.out.println(root.selectNodes("//cc").size()) /*选择所有的book节点,并且有子节点author的*/ System.out.println((root.selectNodes("//book[author]").size())) /* 选择所有book节点,并且有属性category的 */ System.out.println((root.selectNodes("//book[@category]").size())) /* 选择所有book节点,并且有子节点author值为James McGovern ,并且还有category属性节点值为WEB 下面的price节点*/ System.out.println(root.selectNodes("//book[author=James McGovern][@category=WEB]/price").size()) } }

Java读写文件的几种方法

java读取配置文件的几种方法如下:
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。
方式二:采用ResourceBundle类读取配置信息,
优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。

java怎么读写xml文件

谁说不自带的rt.jar就是啊

1.接口

/**
*
*/
package com.huawei.liyong.interfaces


import java.util.Map


/**
* @author Administrator
*/
public interface OperateTool
{

/**
* 解析XML
*/
Map parseXML( String xmlPath, String root )

/**
* 写入文件
*/
void writeToFile( String filePath, String content )

/**
* 排序
*/
void orderScore( Map map, String resultPath )

}

2.实体Bean 学生

/*
* 文件名: Student.java
* 版权: 〈版权〉
* 描述: 〈描述〉
* 撰写人: Administrator
* 修改时间: Jul 31, 201 * 跟踪单号:〈跟踪单号〉
* 修改单号:〈修改单号〉
* 修改内容:〈修改内容〉
*/

package com.huawei.liyong.bean


/**
*


* Description: //描述类的信息和作用
*
* @author Administrator
*/
public class Student
{
private String name

private String place

private String score

/**
* @return the name
*/
public String getName()
{
return name
}
/**
* @param name
* the name to set
*/
public void setName( String name )
{
this.name = name
}
/**
* @return the place
*/
public String getPlace()
{
return place
}
/**
* @param place
* the place to set
*/
public void setPlace( String place )
{
this.place = place
}
/**
* @return the score
*/
public String getScore()
{
return score
}
/**
* @param score
* the score to set
*/
public void setScore( String score )
{
this.score = score
}

/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return new StringBuffer().append(
Student.class.getName()
"[name="
this.name
",place="
this.place
",score="
this.score
"]").toString()
}

}

3.具体操作类

/**
*
*/
package com.huawei.liyong.action


import java.io.File
import java.io.FileWriter
import java.io.IOException
import java.util.HashMap
import java.util.Map

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

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

import com.huawei.liyong.bean.Student
import com.huawei.liyong.interfaces.OperateTool


/**
* @author Administrator
*/
public class OperaterAction
{

/**
* @param args
*/
public static void main( String[] args )
{
Operator o = new Operator()
o.orderScore(o.parseXML("student.xml", "student"), "result.txt")
}
}

class Operator implements OperateTool
{

private DocumentBuilderFactory dbf

private DocumentBuilder db

private Document document

private NodeList nodeList

private Map map = new HashMap()

private Student student = new Student()

public Map parseXML( String xmlPath, String root )
{
// TODO parseXML
try
{
dbf = DocumentBuilderFactory.newInstance()
db = dbf.newDocumentBuilder()
document = db.parse(xmlPath)
nodeList = document.getElementsByTagName(root)
for( int j = 0 j < nodeList.getLength() j )
{
map.put("all" j, nodeList.item(j).getChildNodes().item(1)
.getTextContent()
","
nodeList.item(j).getChildNodes().item(3)
.getTextContent()
","
nodeList.item(j).getChildNodes().item(5)
.getTextContent())
}
}
catch(ParserConfigurationException e)
{
e.printStackTrace()
}
catch(SAXException e)
{
e.printStackTrace()
}
catch(IOException e)
{
e.printStackTrace()
}
return map
}

public void writeToFile( String filePath, String content )
{
FileWriter fw = null
File f = null
try
{
f = new File(filePath)
fw = new FileWriter(f)
fw.write(content)
fw.flush()
}
catch(IOException e)
{
e.printStackTrace()
}
finally
{
try
{
if(null != fw)
{
fw.close()
}
}
catch(IOException e)
{
e.printStackTrace()
}
}
}
public void orderScore( Map maps, String resultPath )
{
String[] array = null
StringBuffer buffer = new StringBuffer()
StringBuffer sbf = new StringBuffer()
String temp = ""
for( int i = 0 i < maps.size() i )
{
buffer.append(maps.get("all" i) "")
}
array = buffer.toString().split("")
for( int i = 0 i < array.length i )
{
for( int j = i j < array.length j )
{
if(Integer.parseInt(array[i].substring(array[i]
.lastIndexOf(",") 1, array[i].length())) < Integer
.parseInt(array[j].substring(array[j].lastIndexOf(",") 1,
array[j].length())))
{
temp = array[j]
array[j] = array[i]
array[i] = temp
}
}
}
for( int i = 0 i < array.length i )
{
student.setName(array[i].split(",")[0])
student.setPlace(array[i].split(",")[1])
student.setScore(array[i].split(",")[2])
sbf.append(student.toString() " ")
writeToFile(resultPath, sbf.toString())
}
}
}

详解Java解析XML的四种方法

1、DOM生成和解析XML方式
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
2、SAX生成和解析XML方式
为解决DOM的问题,出现了SAX。SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet只需XML文档的少量内容,很少回头访问;机器内存少;
3、DOM4J生成和解析XML方式
OM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
4、JDOM生成和解析XML
为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。

如何使用java读取xml文件

使用 import 语句导入 dom4j API 类:
import org.dom4j.Document
import org.dom4j.DocumentHelper
import org.dom4j.Element

使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。
Document document = DocumentHelper.createDocument()

使用 addElement() 方法创建根元素 c 。 addElement() 用于向 XML 文档中增加元素。
Element cElement = document.addElement("c")

在 c 元素中使用 addComment() 方法添加注释“An XML c”。
cElement.addComment("An XML c")

在 c元素中使用 addElement() 方法增加 s 元素。
Element sElement = cElement.addElement("s")
在 c元素中使用 addElement() 方法增加 a 元素。
Element aElement = cElement.addElement("a")
在 c元素中使用 addElement() 方法增加 d 元素。
Element dElement = cElement.addElement("d")

在 c元素中使用 addElement() 方法增加 file 元素。
Element fileElement = cElement.addElement("file")

在 file元素中使用 addElement() 方法增加 mode 元素。
Element modeElement = fileElement.addElement("mode")
在 file元素中使用 addElement() 方法增加 name 元素。
Element nameElement = fileElement.addElement("name")

...

import org.dom4j.Document
import org.dom4j.DocumentHelper
import org.dom4j.Element
import org.dom4j.io.XMLWriter
import java.io.*
public class XmlDom4J{
public void generateDocument(){
Document document = DocumentHelper.createDocument()
Element cElement = document.addElement("c")
cElement.addComment("An XML c")
Element sElement = cElement.addElement("s")
Element aElement = cElement.addElement("a")
Element dElement = cElement.addElement("d")
Element fileElement = cElement.addElement("file")
Element modeElement = fileElement.addElement("mode")
Element nameElement = fileElement.addElement("name")

try{
XMLWriter output = new XMLWriter(
new FileWriter( new File("c:/newC.xml") ))
output.write( document )
output.close()
}
catch(IOException e){System.out.println(e.getMessage())}
}
public static void main(String[] args){
XmlDom4J dom4j=new XmlDom4J()
dom4j.generateDocument()
}
}

代码未测试,仅供参考!

最新文章