`

JAXP中的dom解析xml

    博客分类:
  • xml
xml 
阅读更多

一.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 DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    DOM解析XML应用实例(入门经典案例)

    DOM解析XML时,会将整个XML文档加载到内存中,形成一棵由节点构成的树形结构,每个节点代表XML文档的一部分,如元素、属性、文本等。 首先,了解DOM解析的基本步骤: 1. 加载XML文档:使用Java的`...

    经典的DOM解析XML范例

    在提供的代码示例中,展示了如何使用DOM解析XML文件`library.xml`。首先,通过`DocumentBuilderFactory`创建解析器,然后解析文件,得到`Document`对象。接着,获取根元素`books`,并通过`getChildNodes()`遍历所有...

    java中用dom解析xml的经典入门级文档

    ### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...

    Dom方式解析XML

    综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    使用jaxp进行dom解析_动力节点Java学院整理

    本文将详细介绍如何使用Java中的JAXP(Java API for XML Processing)来实现DOM解析,帮助开发者快速理解和掌握DOM解析技术。 首先,我们来了解一下JAXP。JAXP是Java提供的用于处理XML文档的一组API,主要包含两个...

    DOM 解析XML

    在实际开发中,DOM解析XML常用于以下场景: 1. **配置文件读取**:许多应用程序使用XML格式的配置文件,DOM解析可以方便地读取和修改配置参数。 2. **数据交换**:在Web服务中,XML常用于数据交换,DOM解析允许...

    使用JAXP之SAX读取XML内容

    JAXP(Java API for XML Processing)是Java平台上的XML处理标准,它提供了包括SAX在内的三种解析方式,即DOM(Document Object Model)、SAX和XSLT。本篇文章将深入探讨如何使用JAXP的SAX解析器来读取XML内容。 ...

    dom4j解析XML文档.ppt

    DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...

    使用dom4j解析XML

    【使用dom4j解析XML】 dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 *...

    使用dom解析某个固定XML

    1. **引入DOM解析库**:在Java中,我们可以使用Java API for XML Processing (JAXP)提供的`DocumentBuilderFactory`和`DocumentBuilder`类来创建和使用DOM解析器。首先,确保引入了必要的库: ```java import javax...

    dom读取xml与写入xml

    本文将深入探讨DOM解析XML的原理和实践,并通过源码分析来揭示其实现细节。 首先,理解DOM的核心概念。DOM是一种树型结构,每个XML文档被解析后都会形成一棵由节点组成的树。根节点是整个文档,而子节点可以是元素...

    Java解析XML文件的DOM和SAX方式.doc

    在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...

    XML的Jaxp解析示例和简单项目

    DOM解析器将整个XML文档加载到内存中形成一个树形结构,便于随机访问;而SAX解析器则采用事件驱动模型,逐个处理XML文档的元素和属性,占用内存较少。 ### JAXP解析XML的基本步骤 1. **创建解析器工厂**:首先,...

    xmldom解析

    在这个主题中,“xmldom解析”主要涉及在服务器端和客户端使用DOM解析XML数据的技术。 1. **DOM解析原理**: - DOM解析器将XML文档转化为内存中的树形结构,称为DOM树。每个节点代表XML文档的一部分,如元素、属性...

    dom4j---xml解析jar包

    在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...

    java解析xml的四种经典方法

    在上述代码中,我们使用了JAXP(Java API for XML Processing)中的`DocumentBuilderFactory`和`DocumentBuilder`来创建并解析XML文件。`getElementsByTagName()`用于获取指定标签的节点列表,然后通过`item()`方法...

    解析xml文件需要的jar包

    通常,解析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`、`...

Global site tag (gtag.js) - Google Analytics