- 浏览: 96376 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
pug007:
您好。请问您是如何保证输出的json是按照{"tot ...
struts2 + hibernate + spring + flexgrid 分页实现 -
四书五经:
不错,记一笔。sorry,上面打错字了
MySql服务器的启动和关闭 -
四书五经:
不错,记不笔
MySql服务器的启动和关闭 -
VincentBoy:
不错 啊。
请问一下,你还有没有这个struts_JSON项 ...
struts2 + jquery + json模拟登陆效果 -
天空之城:
请问要是执行修改操作的时候,如何动态的默认显示?
comboboxTree的使用
一、XML文件test.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <persons> <person> <name>xiaohui</name> <age>23</age> </person> <person> <name>yanzi</name> <age>20</age> </person> </persons>
二、JAVA程序:
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.*; import java.io.File; public class TraverseXML { public static void main(String[] args) { try{ String file = "TestData\\test.xml"; DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = dbf.newDocumentBuilder(); Document doc = docBuilder.parse(new File(file)); NodeList nodes = doc.getElementsByTagName("person"); System.out.println("总共有"+nodes.getLength()+"个人。"); for(int i=0;i<nodes.getLength();i++) { Node node = nodes.item(i); NodeList childNodes = node.getChildNodes(); System.out.println("person有"+childNodes.getLength()+"个节点。"); for(int j=0;j<childNodes.getLength();j++) { Node childNode = childNodes.item(j); if(childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getNodeName().equals("name")) System.out.println("名字:"+childNode.getFirstChild().getNodeValue()); if(childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getNodeName().equals("age")) System.out.println("年龄:"+childNode.getFirstChild().getNodeValue()); } System.out.println(); } }catch(Exception e){ e.printStackTrace(); } } }
三、判断节点类型和获取节点的名字和值,Node对象具有以下三个方法可以实现。
getNodeType() :获取节点的类型,返回值为short类型。以下是节点类型表和对应的short值。
getNodeName():获取节点的名字,返回值为String类型。
getNodeValue():获取节点的值,如果节点类型为TEXT_NODE,则返回文本值,返回值为String类型。
import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.io.OutputFormat; import org.dom4j.Element; import org.dom4j.io.XMLWriter; import java.io.*; import org.dom4j.Attribute; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; import java.util.List; import java.util.Iterator; import org.dom4j.QName; public class dom4j { public void readAttribute(String filename, String xpath, String attribute) { SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); List list = document.selectNodes(xpath); Iterator iter = list.iterator(); while (iter.hasNext()) { Element element = (Element) iter.next(); System.out.println("element= "+element); System.out.println("element.attributeValue(attribute)= "+element.attributeValue(attribute)); } } catch (DocumentException e) { e.printStackTrace(); } } public static void main(String[] argv) { dom4j ptree = new dom4j(); ptree.printXML(); } // 创建一个xml文件 public void changeXML() { // 创建一个xml document对象 Document document = DocumentHelper.createDocument(); // 创建根节点元素 Element books = document.addElement("books"); // 给books添加注释 books.addComment("—An XML Example"); // 使用addProcessingInstruction()方法增加一个处理指令 books.addProcessingInstruction("target", "text"); // 在当前元素后增加一个子元素 Element bookone = books.addElement("bookone"); // 设置当前元素的属性 bookone.addAttribute("title", "XML study"); bookone.addAttribute("publisher", "angellove workers"); Element article = bookone.addElement("article"); article.addAttribute("level", "high"); article.addAttribute("date", "December-2007"); Element titleElement = article.addElement("title"); // 设置当前元素的文本值,即是内容 titleElement.setText("Java configuration with XML"); Element authorElement = article.addElement("author"); Element firstNameElement = authorElement.addElement("firstname"); firstNameElement.setText("angel"); Element lastNameElement = authorElement.addElement("lastname"); lastNameElement.setText("free"); // XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动添加到 XML 文档中。 try { // 创建一个xml写入流,将生成的xml文件写入指定的文件中 // 使用优雅的方式写入(一共有三种方式:普通方式,优雅方式和紧凑方式) //紧凑方式写入format = OutputFormat.createCompactFormat(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter output = new XMLWriter( new FileWriter(new File("books.xml")), format); output.write(document); output.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } // 使用XPath表达式的查询 public void modifXML(File inputXml) { try { //创建一个读取xml文件的对象 SAXReader saxReader = new SAXReader(); //读取并获得xml文档 Document document = saxReader.read(inputXml); //使用XPATH表达式从article元素中获得level节点列表 List list = document.selectNodes("//article/@level"); //创建一个迭代器. Iterator iter = list.iterator(); while (iter.hasNext()) { //获得level节点的属性 Attribute attribute = (Attribute) iter.next(); if (attribute.getValue().equals("high")) //设置属性的值 attribute.setValue("low"); } list = document.selectNodes("//article/@date"); iter = list.iterator(); while (iter.hasNext()) { Attribute attribute = (Attribute) iter.next(); if (attribute.getValue().equals("December-2007")) attribute.setValue("October-2006"); } list = document.selectNodes("//article"); iter = list.iterator(); while (iter.hasNext()) { Element element = (Element) iter.next(); Iterator iterator = element.elementIterator("title"); while (iterator.hasNext()) { Element titleElement = (Element) iterator.next(); //获得属性的文本. if (titleElement.getText().equals("Java configuration with XML")) //重新设置属性的文本 titleElement.setText("good good study,day day up"); } } list = document.selectNodes("//article/author"); iter = list.iterator(); while (iter.hasNext()) { Element element = (Element) iter.next(); Iterator iterator = element.elementIterator("firstname"); while (iterator.hasNext()) { Element firstNameElement = (Element) iterator.next(); if (firstNameElement.getText().equals("angel")) firstNameElement.setText("god"); } } list = document.selectNodes("//article/author"); iter = list.iterator(); while (iter.hasNext()) { Element element = (Element) iter.next(); Iterator iterator = element.elementIterator("lastname"); while (iterator.hasNext()) { Element lastNameElement = (Element) iterator.next(); if (lastNameElement.getText().equals("free")) lastNameElement.setText("dark"); } } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter output = new XMLWriter( new FileWriter(new File("modifyBooks.xml")), format); output.write(document); output.close(); } catch (DocumentException e) { System.out.println("aaaa" + e.getMessage()); } catch (IOException e) { System.out.println("rrr" + e.getMessage()); } } // 递归遍历:打印出xml树 public void printXML() { System.out.println("<?xml version='1.0' encoding='GBK'?>"); System.out.println(); try { SAXReader sreader = new SAXReader(); Document document = sreader.read(new File("books.xml")); Element root = document.getRootElement(); printtree(root, 0); } catch (Exception e) { e.printStackTrace(); } } public void printtree(Element node, int i) { //打印一个节点开始"<",前面有空格 System.out.println(); for (int j = 1; j <= i; j++) { System.out.print(" "); } System.out.print("<"); //打印节点的名字 String name = node.getName(); System.out.print(name); //打印节点属性和属性值 Iterator it = node.attributeIterator(); while (it.hasNext()) { Attribute attr = (Attribute) it.next(); System.out.print(" " + attr.getName() + "=" + attr.getValue()); } //打印节点的结束">"; System.out.print(" >"); //判断是不是有文本值 if (!"".equals(node.getText())) { System.out.print(node.getText()); } //此处开始递归调用 Iterator ite = node.elementIterator(); while (ite.hasNext()) { Element snode = (Element) ite.next(); printtree(snode, i + 2); } for (int j = i; j >= 1; j--) { System.out.print(" "); } System.out.println("</" + name + ">"); } }
发表评论
-
一道Java笔试面试题
2011-01-21 16:17 1134一道Java笔试面试题,代码如下: packag ... -
JAVA对象与XML互相转变
2011-01-21 13:42 1037简单介绍下JAVA对象与XML互相转变,详细请进入http:/ ... -
Java读取配置文件的几种方法
2010-12-30 10:24 833Java读取配置文件的几种 ... -
Log4j使用总结
2010-12-30 10:22 810Log4j使用总结: #OFF、FATAL、ERROR、WA ... -
jdbc连接各种数据库方式列表
2010-12-30 10:19 856下面罗列了各种数据库使用JDBC连接的方式: 1、Oracl ... -
字符串数组与字符串之间的互转
2010-12-30 10:14 967字符串数组与字符串之间的互转:join/split 1、Ja ... -
字符串转日期或日期转字符串
2010-12-06 17:10 1612字符串转日期或日期转字符串 用法: SimpleDate ... -
自定义标签
2010-08-13 14:46 1072自定义标签: 1、实现自定义标签按如下步骤进行: ( ...
相关推荐
DOM为XML文档提供了一种内存中的表示方式,使得开发人员可以方便地创建、修改和遍历XML文档。在Java中,DOM API被包含在`javax.xml.parsers`和`org.w3c.dom`这两个包中。 DOM API的核心类包括`...
针对这一问题,"遍历XML文件内所有节点和属性"的非递归方法应运而生。 在描述中提到的“比递归调用的速度要快很多”,这通常是指通过迭代而非递归的方式遍历XML文档。递归方法会为每个节点创建新的函数调用栈,而当...
Java DOM 解析 XML 实例 Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过...
### Java DOM 解析 XML 在Java中,DOM(Document Object Model)是一种用于处理XML文档的标准接口。通过DOM,我们可以将整个XML文档加载到内存中,并对其进行读取、修改等操作。这种方式非常适合那些需要对XML文档...
Java DOM(Document Object Model)是Java处理XML文档的一种标准方式,它将XML文档解析成一个树形结构,每个XML元素、属性和文本内容都对应树中的一个节点。DOM提供了丰富的API,允许开发者对XML进行增、删、改、查...
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...
JAVA DOM 解析 XML 文件过程详解 JAVA DOM 解析 XML 文件过程详解是指使用 JAVA 语言通过 DOM(Document Object Model)解析 XML 文件的过程。DOM 是一种应用程序接口(API),它将 XML 文档转换为一个树形结构,...
以下是一个使用递归和DOM来遍历XML文档的Java代码示例: ```java package com.dowebber.xmlreader; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax....
在Java中,DOM解析XML文件主要涉及到`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`这两个类。首先,我们创建一个`DocumentBuilderFactory`实例,然后用它来获取一个`...
在Java编程中,遍历文件夹和解析XML是两种常见的操作,它们在处理数据和构建应用程序时发挥着关键作用。这篇文档"java遍历文件夹解析XML.doc"可能详细介绍了如何使用Java进行这两个任务。 首先,让我们深入了解一下...
5. **遍历和操作XML结构**:现在,你可以使用DOM API遍历XML文档的节点,获取或修改元素、属性和文本。 ```java NodeList nodeList = doc.getElementsByTagName("tag_name"); for (int i = 0; i (); i++) { ...
接下来,我们可以递归地遍历XML结构,访问每个元素节点及其属性: ```java void traverse(Element element) { // 访问元素的属性 for (Attribute attr : element.attributes()) { System.out.println("属性名: ...
Java作为一款强大的编程语言,提供了多种处理XML的API,其中包括DOM(Document Object Model)和SAX(Simple API for XML)。本教程将帮助初学者深入理解这两种解析XML的方法。 1. DOM解析器 DOM解析器将整个XML...
Java中的DOM解析XML是一种常见的处理XML数据的方式,它允许程序以结构化的方式访问和操作XML文档。DOM(Document Object Model)是一种W3C标准,它将XML文档转换为一棵节点树,每个节点代表XML文档的一个部分,如...
总的来说,"dom.jar"在Java开发中用于XML解析,特别是对于那些需要对XML文档进行全面操作或遍历的场景。理解DOM解析机制和如何在Java中使用DOM API,是任何涉及XML处理的Java开发者必备的基础知识。
Java DOM4J库是用于处理XML文档的一个强大的开源框架,它提供了一种灵活且高效的方式来解析、创建和操作XML内容。DOM4J这个名字来源于“Document Object Model”(DOM)和“Java”的组合,它扩展了DOM接口,同时引入...
总结来说,Java 中使用 DOM 解析 XML 是一种直观且功能强大的方式,尤其适用于对整个 XML 文档进行遍历和修改。不过,考虑到性能和内存占用,对于大文件或资源有限的环境,可能需要考虑其他解析策略。在 Android ...