- 浏览: 778530 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (256)
- ssh (18)
- webservice (8)
- java基础 (38)
- j2EE方方面面 (17)
- 随意涂鸭!呵呵 (2)
- 数据库 (22)
- work (10)
- XML与XML解析 (9)
- 测试 (2)
- sso (1)
- ldap (6)
- java 模板技术 (4)
- 版本管理 (1)
- 每日小点滴 (26)
- javascript (26)
- Jakarta Commons (2)
- css (6)
- 设计 (3)
- Eclipse插件开发 (3)
- BAP (3)
- web控件 (2)
- java加密解密 (4)
- 调优 (6)
- 界面技术 (3)
- java多线程 (6)
- 互联网 (2)
- 日志管理 (4)
- java调度 (3)
- rest (0)
- Python (2)
- mobile (2)
- 2016的故事 (4)
- Docker (1)
- NOSQL_Hadoop (0)
最新评论
-
promiseloney:
这个女程序员厉害了。。。
JVM调优:GC 参数 -
zxjlwt:
可以通过WebService上传一个文件吗?素人派http:/ ...
webservice传送XML大小估算 -
liaoshaoyang:
写的不错嘛 可以做参考
权限管理设计一 -
aaaaaaaaabaas:
谢谢,对我有帮助
Apache Commons Configuration使用入门 -
Jack_Wilshere:
com.smartdot.pdm.business.corp. ...
java导出txt
Jdom:Opensource,free
Commons_Configuration:Apache公司的
W3Cdom:已经被收录到java名下,在org.w3c.dom包中。
books.xml
jdom解析:
w3cDOM 解析
Commons_Configuration解析
Commons_Configuration api:http://commons.apache.org/configuration/apidocs/index.html
jdom API:见附件
Commons_Configuration:Apache公司的
W3Cdom:已经被收录到java名下,在org.w3c.dom包中。
books.xml
<?xml version="1.0" encoding="UTF-8"?> <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>a</name> <price>5</price> <memo>四大名著之一。</memo> </book> </books>
jdom解析:
package test; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Iterator; import java.util.List; //下面是引用到JDOM中的类 import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.Text; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.jdom.xpath.XPath; public class testJdom { public static void main(String[] args) { try { /******************************************************************* * 解析books.xml */ String xPath = "./src/books.xml"; // SAXBuilder负责从文件、流、URL等来构建一个JDOM document SAXBuilder builder = new SAXBuilder(false); Document doc = builder.build(xPath); Element books = doc.getRootElement(); // 设置输出到控制台 PrintStream pr = System.out; Format format = Format.getCompactFormat(); // 创建输出格式 format.setEncoding("GBK"); // 编码 format.setIndent(" "); XMLOutputter out = new XMLOutputter(format); // --- 新建一个元素 ---- System.out.println("++++++++++++新增一本书开始++++++++++++"); Element theBook = new Element("book"); Element theElem = new Element("name"); theElem.setText("新加的书名"); Element thePrice = new Element("price"); // 增加一个属性 thePrice.setAttribute("incread", "yes"); thePrice.setText("50"); theBook.addContent(theElem); theBook.addContent(thePrice); books.addContent(theBook); out.output(doc, pr); System.out.println(out.toString()); System.out.println("++++++++++++新增一本书结束++++++++++++"); System.out.println("+++++++++++条件查询 ++++++++++++"); // --- 多个条件查询--- // 选取books下的所有book元素 List find1 = XPath.selectNodes(books, "/books/book"); // 选取books下的所有book的子元素price>10的元素 List find2 = XPath.selectNodes(books, "/books/book[price=10]"); // 这里的查询不支持中文?????? List find3 = XPath.selectNodes(books, "/books/book[name='a']"); // 打印出是价钱是六块钱的书名 String book1 = ((Text) XPath.selectSingleNode(books, "/books/book[price=6]/name/text()")).getTextNormalize(); System.out.println(book1); // 选取所有 books 元素的 book 元素,且其中的 book 元素拥有名为 id 的属性。 List find4 = XPath.selectNodes(books, "/books/book[@id]"); // 选取所有 books 元素的 book 元素,且其中的 book 元素的id属性值须等于B02。 List find5 = XPath.selectNodes(books, "/books/book[@id='B02']"); // System.out.println("find.size" + find5.size() + "--"); // Element findelement = (Element) find5.get(0); // out.output(findelement, pr); System.out.println("查询结束"); System.out.println("+++++++++++删除、修改元素及属性(删除B02 三国演义) ++++++++++"); Element eleB02 = (Element) XPath.selectSingleNode(books, "/books/book[@id='B02']"); // 下面这条语句会把books中的所有子元素删除,添加此文本元素节点 // --- books.setText("dfdfdfd"); // 添加此文本元素节点 // ---books.addContent("dfdfdfd"); // 删除元素的第一种方法,先找到元素 // --books.removeContent(eleB02); // 修改元素的属性 eleB02.setAttribute("name", "三国演****义"); //删除一个元素的属性 //--eleB02.removeAttribute("属性名"); out.output(books, pr); // 将文件写回到XML文件 // out.output(doc,new FileOutputStream(xPath)); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }
w3cDOM 解析
package test; 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 testDom { 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("./src/books.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); System.out.println("--- 新建一本书完成 ----"); // --- 新建一本书完成 ---- // --- 下面对《哈里波特》做一些修改。 ---- // --- 查询找《哈里波特》---- theBook = (Element) selectSingleNode("/books/book[name='哈里波特']", root); System.out.println("--- 查询找《哈里波特》 ----"); output(theBook); // --- 此时修改这本书的价格 ----- theBook.getElementsByTagName("price").item(0).setTextContent("15");// getElementsByTagName返回的是NodeList,所以要跟上item(0) 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(); } } }
Commons_Configuration解析
package test; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; public class testCommonsConfiguration { public static void main(String args[]) { try { String file = "./src/books.xml"; XMLConfiguration config = new XMLConfiguration(file); System.out.println("成功加载:" + file); String btime = config.getString("book.name"); System.out.println("书名:" + btime); } catch (Exception e) { e.printStackTrace(); } } }
Commons_Configuration api:http://commons.apache.org/configuration/apidocs/index.html
jdom API:见附件
- jdom_doc.rar (249.3 KB)
- 下载次数: 55
发表评论
-
jackson json 转换Bean, Bean 里没有对应的值 jackson Unrecognized field
2013-01-30 11:01 14792转载自:http://blog.csdn.net/a952 ... -
XML解析方法
2010-10-29 16:47 1419一、SAX 和DOM java解析XML文档,最常用有两种 ... -
w3c dom操作Xml时从加入另一个XML文件的一个元素
2010-10-29 16:18 1493同时读取两个XML文件,如果需要把一个XML 文件中的某个特定 ... -
Docbook之一:概念 DOM schema xsl xsl-xslt xsl-fo
2010-03-23 14:35 1430一、XML基本概念说明 1、XML xml 是扩展标记语言 ... -
解析XML时DTD的处理--解析时忽略,生成XML文件时加上。-- XML进阶
2009-11-19 17:34 4670一、解析XML文件时,遇到DTD的定义要怎么办? ... -
JDOM/XPATH编程指南
2008-07-29 18:58 1138本文分别介绍了 JDOM 和 ... -
建立和操作 JDOM 文档
2008-04-08 11:04 1309JDOM 使用标准的 Java 编码模式。只要有可能,它使用 ... -
Apache Commons Configuration使用入门
2008-04-07 15:40 13559项目开发过程中不免有 ...
相关推荐
标题中的“PB 解析XML”指的是使用PowerBuilder(简称PB)这一编程工具处理XML数据的过程。PowerBuilder是一款广泛用于开发企业级应用的可视化编程环境,它支持多种数据格式,包括XML。XML(eXtensible Markup ...
本文将深入探讨如何使用C++来解析XML文件,主要围绕“C++实现对xml文件的解析”这一主题展开。 XML文件通常包含一系列元素,每个元素都有开始标签、结束标签和可能的属性。C++中解析XML文件的方法多种多样,这里...
解析XML是将XML文档转换为程序可以理解的数据结构的关键步骤。本文将深入探讨XML解析的基本概念、常用方法以及相关的Java库——JDOM。 XML文档由一系列元素构成,每个元素都包含标签、属性和内容。解析XML的过程...
本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`XMLDoc`,它们包含了处理XML的基本类。`Classes`单元提供了基础的TStringList等类型,而`XMLDoc`单元则包含了...
在C++中,解析XML文档或XML字符串是常见的任务,特别是在需要与JavaScript或其他不支持指针的语言交互时。本文将详细介绍如何在Visual Studio 2010环境下利用Microsoft的MSXML库来处理XML数据。 首先,让我们看看...
在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...
在本项目"STM32解析XML完整工程.zip"中,重点是实现STM32利用软件资源处理XML(eXtensible Markup Language)文件。XML是一种用于标记数据的标准格式,常用于存储和传输结构化数据,例如配置文件、设备通信协议等。 ...
在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...
标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...
在标题“domino通过lotusscript解析xml”中,我们关注的重点是使用Lotusscript来解析XML文件。解析XML意味着读取其结构并从中提取所需的信息。在Lotusscript中,我们可以使用内置的XML处理对象,如`XMLDocument`,来...
使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml <text>Some text here ...
在本文中,我们将深入探讨如何使用C#编程语言解析XML文件,并将其内容在Windows Forms(WinForm)应用程序中展示。XML(eXtensible Markup Language)是一种数据存储和交换的标准格式,而C#是Microsoft .NET框架下...
资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版 内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和...
4. **解析XML**:使用ezxml库的核心函数`ezxml_parse()`解析XML文件。这个函数会返回一个ezxml_t类型的根节点,代表整个XML文档。然后,可以使用`child()`, `tag()`, `attr()`, `text()`等方法来遍历和访问XML树。 ...
有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的文件中生成相关知识点,涵盖 JS 解析 XML 文件的各种方面。 JS 解析 XML 文件的必要性 在当前的 web 开发中,XML 文件广泛应用于数据交换和存储。因此,如何...
纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...