`
guyinglong
  • 浏览: 73946 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

java xml操作

    博客分类:
  • xml
阅读更多
把 DOM element 转为 String

public String nodeToString(Node  node) throws Exception{       
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
StringWriter sw = new StringWriter();
trans.transform(new DOMSource(node), new StreamResult(sw));
String s = sw.toString();
return s;
}

String转Document
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder  =  factory.newDocumentBuilder();
Document doc  =  builder.parse( new  ByteArrayInputStream(str.getBytes()));
//或 Document doc = builder.parse( new java.io.StringReader(str));



xml更新
xml:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<Messages>
<sendName>sendUsers</sendName>
<receiveName>snake</receiveName>
<date>2007-12-04 12:20:00</date>
<status>0</status>
<message>this is Content</message>
</Messages>
</users>


import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class JavaXML {
public static boolean doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
/** 将document中的内容写入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 编码 */
// transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
}
return flag;
}

public static Document load(String filename) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filename));
document.normalize();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}

/**
* 演示修改文件的具体某个节点的值
*/
public static void xmlUpdateDemo() {
Document document = load("message.xml");
Node root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得ftp所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k = 0; k < ftplist.getLength(); k++) {
Node subnode = ftplist.item(k);                 
if (subnode.getNodeType() == Node.ELEMENT_NODE
&& subnode.getNodeName() == "status") {
subnode.getFirstChild().setNodeValue("1");
}
}

}
}

doc2XmlFile(document, "message.xml");
}

public static void main(String args[]) throws Exception {
JavaXML.xmlUpdateDemo();
}
}

XPATH 更新节点值
// 创建 XpathExpression 对象
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
XPathExpression xPathExpression = xPath.compile("/users/Messages/sendName[@date='090915']/firstName");
// 结合 XML 文件和 XPATH 的表达式就可以得到相关节点的内容
Node firstName = (Node)xPathExpression.evaluate(doc,XPathConstants.NODE);
firstName.getFirstChild().setNodeValue("zeng");       
System.out.println(nodeToString(doc));
//xPathExpression = xPathTest.compile("ancestor::Messages");
//当前结点的Messages祖先结点
// Node n = (Node)xPathExpression.evaluate(firstName,XPathConstants.NODE);  
// System.out.println(nodeToString(doc));    


一个可以完成读取、打印输出、保存xml等等功能的java

import java.util.*;
import java.net.URL;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;

import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.SerializerFactory;
import org.apache.xml.serialize.XMLSerializer;
import org.xml.sax.InputSource;

public class xmlUtil implements java.io.Serializable {

public xmlUtil()
{
}
public static DocumentBuilder getBuilder() throws ParserConfigurationException
{
DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
return builder;
}
//get a document from given file
public static Document getDocument(String path) throws Exception
{
//BufferedReader fileIn=new BufferedReader(new FileReader(path));
File f = new File(path);
DocumentBuilder builder=getBuilder();
Document doc = builder.parse(f);
return doc;
}
//get a document from InputStream
public static Document getDocument(InputStream in) throws Exception
{
DocumentBuilder builder=getBuilder();
Document doc = builder.parse(in);
return doc;
}

//create a empty document
public static Document getNewDoc() throws Exception
{
DocumentBuilder builder=getBuilder();
Document doc = builder.newDocument();
return doc;
}
//create a document from given string
public static Document getNewDoc(String xmlStr)
{
Document doc = null;
try
{
StringReader sr = new StringReader(xmlStr);
InputSource iSrc = new InputSource(sr);
DocumentBuilder builder=getBuilder();
doc = builder.parse(iSrc);
}
catch (Exception ex)
{
ex.printStackTrace();
}
return doc;
}

//save a document as a file at the given file path
public static void save(Document doc, String filePath)
{
try
{
OutputFormat format = new OutputFormat(doc);   //Serialize DOM
format.setEncoding("GB2312");
StringWriter stringOut = new StringWriter();        //Writer will be a String
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();                     // As a DOM Serializer
serial.serialize(doc.getDocumentElement());
String STRXML = stringOut.toString(); //Spit out DOM as a String
String path = filePath;
writeXml(STRXML, path);

}
catch (Exception e)
{
e.printStackTrace();
}
}

//save a string(xml) in the given file path
public static void writeXml(String STRXML, String path)
{
try
{
File f = new File(path);
PrintWriter out = new PrintWriter(new FileWriter(f));
out.print(STRXML + "\n");
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
//format a document to string
public static String toString(Document doc)
{
String STRXML = null;
try
{
OutputFormat format = new OutputFormat(doc);   //Serialize DOM
format.setEncoding("GB2312");
StringWriter stringOut = new StringWriter();        //Writer will be a String
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();                     // As a DOM Serializer
serial.serialize(doc.getDocumentElement());
STRXML = stringOut.toString(); //Spit out DOM as a String
}
catch (Exception e)
{
e.printStackTrace();
}
return STRXML;
}
//format a node to string
public static String toString(Node node, Document doc)
{
String STRXML = null;
try
{
OutputFormat format = new OutputFormat(doc);   //Serialize DOM
format.setEncoding("GB2312");
StringWriter stringOut = new StringWriter();        //Writer will be a String
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();                     // As a DOM Serializer
serial.serialize((Element) node);
STRXML = stringOut.toString(); //Spit out DOM as a String
}
catch (Exception e)
{
e.printStackTrace();
}
return STRXML;
}

public static void main(String[] args) throws Exception
{
String pathRoot = "NeTrees.xml";
Document doc,doc1;
try
{
doc = xmlUtil.getDocument(pathRoot);
doc1 = xmlUtil.getDocument(pathRoot);
if(doc == doc1)
{
System.out.println("They are  same objects!");
}
else
{
System.out.println("They are different!");
OutputFormat format = new OutputFormat(doc);   //Serialize DOM
format.setEncoding("GB2312");
StringWriter stringOut = new StringWriter();        //Writer will be a String
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();                 // As a DOM Serializer
serial.serialize(doc.getDocumentElement());
String STRXML = stringOut.toString(); //Spit out DOM as a String
System.out.println(STRXML);
}
}
catch (Exception ex)
{
System.out.print("Reading file\"" + pathRoot + "\" error!");
ex.printStackTrace();
}
}
}
分享到:
评论

相关推荐

    java对xml操作的项目案例

    本项目案例“java对xml操作的项目案例”深入探讨了如何使用Java来读取、修改和写入XML文件。下面将详细阐述相关知识点。 一、Java与XML的交互 1. DOM解析器:Document Object Model (DOM) 是一种将整个XML文档加载...

    java_xml_api,java操作XML文档

    它允许开发者将XML数据绑定到Java类上,这样就可以直接通过Java对象来操作XML,反之亦然。JAXB大大简化了XML数据的序列化和反序列化过程,对于XML数据的输入输出操作非常便捷。 4. DOM与SAX的比较 DOM解析器在内存...

    JAVA XML操作

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛...它的灵活性使得XML操作变得简单,适合各种复杂的应用场景。通过熟练掌握DOM4J,你可以高效地处理XML数据,从而提升你的Java应用程序的功能和性能。

    JavaXml读写操作四种方式汇总

    Java XML读写操作是开发过程中常见的一项任务,尤其在处理配置文件、数据交换或存储结构化数据时。这里我们将深入探讨DOM、SAX、JDOM和DOM4J这四种主要的XML处理方式,并通过具体例子来理解它们的工作原理和用法。 ...

    Java Dom4jHelper.java XML操作类下载.rar

    Java Dom4jHelper.java XML文件操作类下载,可实现解析xml文档,遍历文档,遍历解析元素,获得根元素,修改xml某节点的值,输出文件路径及文件名,将xml转换为字符串,字符串转换为文档等功能。

    java xml.java操作XML文档

    4. JDOM和DOM4J: 这两个库是对DOM API的增强,提供了更简洁的API,便于进行XML操作。例如,JDOM使用Java对象模型直接映射XML元素,而DOM4J则提供了灵活且强大的XML处理功能。 5. JAXB (Java Architecture for XML ...

    xml操作类,xml操作类

    xml的所有操作.xml的所有操作.xml的所有操作.xml的所有操作.

    java XML各种操作练习

    以上只是XML操作的基础,实际应用中可能还需要处理属性、文本内容、命名空间等复杂情况。另外,除了DOM,Java还有基于SAX(Simple API for XML)和StAX(Streaming API for XML)的解析方式,它们在处理大型XML文件...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    java XML转成LIST可以转成指定的类数组

    当处理XML文件时,有时我们需要将其内容转换为Java对象,如List,以便于操作和处理。本篇文章将深入探讨如何将XML转换为指定类型的List数组,并涉及多层数据结构的处理。 1. **Java XML解析库** 在Java中,有多种...

    SAX.java 操作xml文件

    SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件

    JAVA对xml操作

    dom4j是一个灵活且功能丰富的Java XML API,它简化了DOM操作。通过`DocumentHelper.parseText()`方法可以直接将XML字符串解析为`org.dom4j.Document`对象。反过来,要将`Document`对象转换为字符串,只需调用`asXML...

    Java xml转化为map

    当从Web服务接收到XML响应时,通常需要将其解析为更便于操作的数据结构,如Map。Map是一种键值对集合,能够方便地进行数据存取。本篇将详细介绍如何在Java中将XML文件转换为Map对象。 首先,我们需要理解XML的基本...

    java操作xml工具包

    Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...

    java导入导出xml文件

    在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,因其结构清晰、易于解析而被广泛应用于各种系统之间的数据传输。本文将深入探讨如何在Java中进行XML文件的导入与导出。 首先,理解XML...

    Java XML编程指南

    本指南将深入探讨如何在Java应用程序中有效地读取、解析、创建和操作XML文档。 一、XML基础 XML是一种自描述的语言,它通过标签来定义数据的结构。每个XML文档都有一个根元素,包含了其他元素,这些元素可以嵌套,...

    Dom4jHelper Java XML操作实例类

    Dom4jHelper Java XML操作实例类,解析url xml文档,遍历解析文档,遍历解析元素,解析文件,获得根元素,修改xml某节点的值,输出文件路径及文件名 如果输出文件为null,则默认为原xml文件,xml转换为字符串,字符串转换为...

    Java-xml.rar_XML java_java xml_javaXML.rar_javaxml.r_xml 网站

    此外,"javaxml.r_xml"和"javaxml.r"标签可能指的是Java的JAXB框架,这是一个用于XML绑定的Java标准,可以自动将Java对象映射为XML文档,反之亦然。这大大简化了处理XML数据的过程,尤其是在构建Web服务或需要与XML...

    java XML解析方式实现自动生成word文档

    对于.docx格式的Word文档,Apache POI提供了XWPF(XML Word Processing)API,它可以操作Word文档中的文本、表格、图片等元素。 以下是一个基本的步骤,展示如何使用Java和Apache POI通过XML解析生成Word文档: 1....

    java xml编程指南

    Java中,`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于构建和操作DOM树。 3. **SAX解析器**:与DOM相比,Simple API for XML (SAX)是一种事件驱动的解析方式,适合处理大型XML文档。...

Global site tag (gtag.js) - Google Analytics