这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。 假设有XML文件:test1.xml <?xml version="1.0" encoding="GBK"?> <books> <book> <name>哈里波特</name> <price>10</price> <memo>这是一本很好看的书。</memo> </book> <book id="B02"> <name>三国演义</name> <price>10</price> <memo>四大名著之一。</memo> </book> <book id="B03"> <name>水浒</name> <price>6</price> <memo>四大名著之一。</memo> </book> <book id="B04"> <name>红楼</name> <price>5</price> <memo>四大名著之一。</memo> </book> </books> 下面是为Test.java import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.*; import javax.xml.xpath.*; public class Test { public static void main(String[] args) { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); Element theBook=null, theElem=null, root=null; try { factory.setIgnoringElementContentWhitespace(true); DocumentBuilder db=factory.newDocumentBuilder(); Document xmldoc=db.parse(new File("Test1.xml")); root=xmldoc.getDocumentElement(); //--- 新建一本书开始 ---- theBook=xmldoc.createElement("book"); theElem=xmldoc.createElement("name"); theElem.setTextContent("新书"); theBook.appendChild(theElem); theElem=xmldoc.createElement("price"); theElem.setTextContent("20"); theBook.appendChild(theElem); theElem=xmldoc.createElement("memo"); theElem.setTextContent("新书的更好看。"); theBook.appendChild(theElem); root.appendChild(theBook); System.out.println("--- 新建一本书开始 ----"); output(xmldoc); //--- 新建一本书完成 ---- //--- 下面对《哈里波特》做一些修改。 ---- //--- 查询找《哈里波特》---- theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root); System.out.println("--- 查询找《哈里波特》 ----"); output(theBook); //--- 此时修改这本书的价格 ----- theBook.getElementsByTagName("price").item(0).setTextContent("15");//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。 System.out.println("--- 此时修改这本书的价格 ----"); output(theBook); //--- 另外还想加一个属性id,值为B01 ---- theBook.setAttribute("id", "B01"); System.out.println("--- 另外还想加一个属性id,值为B01 ----"); output(theBook); //--- 对《哈里波特》修改完成。 ---- //--- 要用id属性删除《三国演义》这本书 ---- theBook=(Element) selectSingleNode("/books/book[@id='B02']", root); System.out.println("--- 要用id属性删除《三国演义》这本书 ----"); output(theBook); theBook.getParentNode().removeChild(theBook); System.out.println("--- 删除后的XML ----"); output(xmldoc); //--- 再将所有价格低于10的书删除 ---- NodeList someBooks=selectNodes("/books/book[price<10]", root); System.out.println("--- 再将所有价格低于10的书删除 ---"); System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---"); for(int i=0;i<someBooks.getLength();i++) { someBooks.item(i).getParentNode().removeChild(someBooks.item(i)); } output(xmldoc); saveXml("Test1_Edited.xml", xmldoc); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void output(Node node) {//将node的XML字符串输出到控制台 TransformerFactory transFactory=TransformerFactory.newInstance(); try { Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("encoding", "gb2312"); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(node); StreamResult result=new StreamResult(); result.setOutputStream(System.out); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点 Node result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try { result=(Node) xpath.evaluate(express, source, XPathConstants.NODE); } catch (XPathExpressionException e) { e.printStackTrace(); } return result; } public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。 NodeList result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try { result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET); } catch (XPathExpressionException e) { e.printStackTrace(); } return result; } public static void saveXml(String fileName, Document doc) {//将Document输出到文件 TransformerFactory transFactory=TransformerFactory.newInstance(); try { Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(doc); StreamResult result=new StreamResult(); result.setOutputStream(new FileOutputStream(fileName)); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
相关推荐
5. 相关在线工具推荐:在实际开发中,如果需要频繁进行xml与json的转换操作,除了使用Java代码实现之外,还可以使用在线工具进行操作,例如示例中提供的在线json代码检验、美化、格式化工具,以及在线xml/json互相...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
在Java编程中,HTTP协议是网络通信的一种标准,常用于...此外,XML报文内容也需要根据实际需求进行定制。如果你在实现过程中遇到问题,可以参考相关Java和HTTP协议的文档,或者访问www.d1bysj.cn获取更多帮助和资源。
Java操作XML编程主要涉及到以下几个关键知识点: 1. **XML(eXtensible Markup Language)**:XML是一种可扩展的标记语言,用于存储和传输结构化数据。它的设计目的是传输和存储数据,而不是显示数据,因此它不像...
dom4j是一个灵活且功能丰富的Java XML API,它简化了DOM操作。通过`DocumentHelper.parseText()`方法可以直接将XML字符串解析为`org.dom4j.Document`对象。反过来,要将`Document`对象转换为字符串,只需调用`asXML...
本项目案例“java对xml操作的项目案例”深入探讨了如何使用Java来读取、修改和写入XML文件。下面将详细阐述相关知识点。 一、Java与XML的交互 1. DOM解析器:Document Object Model (DOM) 是一种将整个XML文档加载...
在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、Commons Lang以及其他的辅助库。以下是POM文件中的依赖配置: ```xml <!-- ....
6. **错误处理**:在转换过程中可能会遇到各种错误,例如样式表语法错误、XML文档结构不正确等,因此需要对异常进行适当的捕获和处理。 #### 示例代码片段 ```java import javax.xml.transform.TransformerFactory...
本实例将带你了解如何在 Java 中进行基本的 XML 操作。 1. **Java与XML库** - **DOM(Document Object Model)**: DOM 提供了一种结构化的表示 XML 文档的方式,通过创建一棵节点树来代表整个文档。Java 中的 `...
本实例将带你深入理解Java操作XML的关键知识点。 1. **DOM解析**: - DOM(Document Object Model)模型是XML文档的一种树形表示方式,Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom....
本文将深入探讨Java对XML的基本操作,包括读取、创建、修改和删除XML文档,以实现对XML的增删改查功能。 首先,让我们了解Java中处理XML的主要API:JDOM、DOM、SAX和StAX。DOM是文档对象模型,它一次性加载整个XML...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
#### 四、Java操作XML实例 下面是一个使用Java读取和写入XML文件的具体实例。 ##### 1. XML文件结构 首先,我们来看一下XML文件的基本结构: ```xml <?xml version="1.0" encoding="GB2312"?> <学生花名册> ...
XML(eXtensible Markup Language)是一种标记语言,用于描述数据并使其具有自解释性,而Java则是强大的编程语言,提供了丰富的API来解析、生成、操作和转换XML文档。这两者的结合使得数据交换和集成变得更加灵活和...
通过这个实例,你应该对如何使用XStream进行了初步了解。实践中,根据具体需求可能需要进行更多的定制,例如添加数据类型转换器、处理日期格式等。熟练掌握这一技能将使你在处理Java和XML之间的数据交互时更加...
解析器读取XML文件,将其内容构建为内存中的树形结构,然后工具遍历这个结构,创建对应的Java对象实例。 在实际应用中,这样的工具能够节省开发者大量时间,尤其是在处理复杂的XML数据结构时。通过自动化的转换,...
Java操作XML编程主要涉及到以下几个关键知识点: 1. **XML(eXtensible Markup Language)**:XML是一种可扩展的标记语言,用于存储和传输结构化数据。它的设计目标是简化数据共享和交换,且具有自描述性,允许用户...
描述:“java版的json与xml之间的转换的实例demo” JSON和XML各有优缺点。JSON以其简洁、易于阅读和生成而受到青睐,尤其适合在网络传输中使用;XML则因其强大的结构化能力,用于复杂的文档和数据存储。在Java环境...
将Java Bean与XML进行互转是常见的需求,这有助于在不同系统间传递数据或者持久化对象状态。本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、...