一.jaxp开发包对xml文件的解析,jaxp使用的解析器是IBM公司的xerces,IBM将此解析器捐献给了apache。
/**@description xml文件*/
<?xml version="1.0" encoding="UTF-8"?><书架>
<书>
<书名 name="abc">JavaWEB</书名>
<作者>李文慧</作者>
<售价>100.00元</售价>
</书>
<书>
<书名>程序人生</书名>
<作者>小刚</作者>
<售价>28.00元</售价>
</书>
<s>aaaa</s>
</书架>
/***
* @descriptin jaxp解析xml文档,Java自带的开发包是使用的IBM公司写的解析器xerces,但是此解析器IBM捐献 给Apache
* @time 2012-10-30 17:02:00
* @author Roinli
*/
public class Demo1 {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {
// 创建工厂对象
DocumentBuilderFactory newInstance = DocumentBuilderFactory.newInstance();
// 通过工厂获得解析器
DocumentBuilder builder = newInstance.newDocumentBuilder();
System.out.println(builder);
// 对xml文档解析
Document document = builder.parse(new File("src/cn//aisino//jaxp//book.xml"));
//findNode(document);// 查找节点文本值
//findNodeAtrr(document); // 查找属性值
//addNode(document);
//addNode1(document);
//deleteNode(document);
//deleteNode1(document);
//editNode1(document);
//editNodeAttr(document);
getALLNode(document.getElementsByTagName("书").item(0));
}
// 对文档增删改查
// 查找 <书名>Java就业培训教程</书名>
public static void findNode(Document document){
NodeList nodeList =document.getElementsByTagName("书名");
Node node = nodeList.item(0);
System.out.println(node.getTextContent());
}
// 查找属性<书名 name="abc">Java就业培训教程</书名>
public static void findNodeAtrr(Document document){
Node node =document.getElementsByTagName("书名").item(0);
if(node.getNodeType() == node.ELEMENT_NODE){
Element element = (org.w3c.dom.Element)node;
String attrvalue = element.getAttribute("name");
System.out.println(attrvalue);
}
}
// 增加节点,在后面追加
public static void addNode(Document document) throws TransformerException{
Node price = document.createElement("售价");
price.setTextContent("59元");
Node book = document.getElementsByTagName("书").item(0);
book.appendChild(price);
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 增加节点 在指定位置添加节点
public static void addNode1(Document document) throws TransformerException{
Node price = document.createElement("售价");
price.setTextContent("59元");
Node book = document.getElementsByTagName("书").item(0);
// 增加节点 在指定位置添加节点
book.insertBefore(price, document.getElementsByTagName("售价").item(0));
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 删除节点
public static void deleteNode(Document document) throws TransformerException{
Node book = document.getElementsByTagName("书").item(0);
book.removeChild(document.getElementsByTagName("售价").item(0));
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 删除节点 优雅方式
public static void deleteNode1(Document document) throws TransformerException{
Node price = document.getElementsByTagName("售价").item(0);
price.getParentNode().removeChild(price);;
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 修改节点 将书价格节点值改成2
public static void editNode1(Document document) throws TransformerException{
Node price = document.getElementsByTagName("售价").item(0);
price.setTextContent("100.00元");
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 修改节点 属性值
public static void editNodeAttr(Document document) throws TransformerException{
Node book = document.getElementsByTagName("书名").item(0);
if(book.getNodeType() == book.ELEMENT_NODE){
Element element = (org.w3c.dom.Element)book;
Attr attributeNode = element.getAttributeNode("name");
attributeNode.setValue("yyyyy");
}
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 遍历xml文档的所有内容 "递归"
public static void getALLNode(Node node){
if(node.getNodeType() == Node.ELEMENT_NODE){
//System.out.println(node.getNodeName());
String content = node.getTextContent().trim();
if(!"".equals(content)){
System.out.println(content.trim());
}
NodeList childNodes = node.getChildNodes();
for(int i=0;i < childNodes.getLength();i++){
Node item = childNodes.item(i);
getALLNode(item);
}
}
}
}
分享到:
相关推荐
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
DOM解析XML时,会将整个XML文档加载到内存中,形成一棵由节点构成的树形结构,每个节点代表XML文档的一部分,如元素、属性、文本等。 首先,了解DOM解析的基本步骤: 1. 加载XML文档:使用Java的`...
在提供的代码示例中,展示了如何使用DOM解析XML文件`library.xml`。首先,通过`DocumentBuilderFactory`创建解析器,然后解析文件,得到`Document`对象。接着,获取根元素`books`,并通过`getChildNodes()`遍历所有...
### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...
综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
本文将详细介绍如何使用Java中的JAXP(Java API for XML Processing)来实现DOM解析,帮助开发者快速理解和掌握DOM解析技术。 首先,我们来了解一下JAXP。JAXP是Java提供的用于处理XML文档的一组API,主要包含两个...
在实际开发中,DOM解析XML常用于以下场景: 1. **配置文件读取**:许多应用程序使用XML格式的配置文件,DOM解析可以方便地读取和修改配置参数。 2. **数据交换**:在Web服务中,XML常用于数据交换,DOM解析允许...
JAXP(Java API for XML Processing)是Java平台上的XML处理标准,它提供了包括SAX在内的三种解析方式,即DOM(Document Object Model)、SAX和XSLT。本篇文章将深入探讨如何使用JAXP的SAX解析器来读取XML内容。 ...
DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...
【使用dom4j解析XML】 dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 *...
1. **引入DOM解析库**:在Java中,我们可以使用Java API for XML Processing (JAXP)提供的`DocumentBuilderFactory`和`DocumentBuilder`类来创建和使用DOM解析器。首先,确保引入了必要的库: ```java import javax...
本文将深入探讨DOM解析XML的原理和实践,并通过源码分析来揭示其实现细节。 首先,理解DOM的核心概念。DOM是一种树型结构,每个XML文档被解析后都会形成一棵由节点组成的树。根节点是整个文档,而子节点可以是元素...
在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...
DOM解析器将整个XML文档加载到内存中形成一个树形结构,便于随机访问;而SAX解析器则采用事件驱动模型,逐个处理XML文档的元素和属性,占用内存较少。 ### JAXP解析XML的基本步骤 1. **创建解析器工厂**:首先,...
在这个主题中,“xmldom解析”主要涉及在服务器端和客户端使用DOM解析XML数据的技术。 1. **DOM解析原理**: - DOM解析器将XML文档转化为内存中的树形结构,称为DOM树。每个节点代表XML文档的一部分,如元素、属性...
在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...
在上述代码中,我们使用了JAXP(Java API for XML Processing)中的`DocumentBuilderFactory`和`DocumentBuilder`来创建并解析XML文件。`getElementsByTagName()`用于获取指定标签的节点列表,然后通过`item()`方法...
通常,解析XML可能需要如`jaxp-1.3.jar`(Java API for XML Processing)、`xml-apis.jar`(XML API)、`sax.jar`(SAX解析器)或`dom4j.jar`(DOM4J库)等库。然而,提供的文件列表`Global.asax`、`gui.ascx`、`...