- 浏览: 93759 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 1097一道Java笔试面试题,代码如下: packag ... -
JAVA对象与XML互相转变
2011-01-21 13:42 1006简单介绍下JAVA对象与XML互相转变,详细请进入http:/ ... -
Java读取配置文件的几种方法
2010-12-30 10:24 788Java读取配置文件的几种 ... -
Log4j使用总结
2010-12-30 10:22 755Log4j使用总结: #OFF、FATAL、ERROR、WA ... -
jdbc连接各种数据库方式列表
2010-12-30 10:19 824下面罗列了各种数据库使用JDBC连接的方式: 1、Oracl ... -
字符串数组与字符串之间的互转
2010-12-30 10:14 919字符串数组与字符串之间的互转:join/split 1、Ja ... -
字符串转日期或日期转字符串
2010-12-06 17:10 1573字符串转日期或日期转字符串 用法: SimpleDate ... -
自定义标签
2010-08-13 14:46 1032自定义标签: 1、实现自定义标签按如下步骤进行: ( ...
相关推荐
Dom4j遍历解析XMLDom4j遍历解析XML
用于处理XML文档的DOM元素属性 代码如下: childNodes:返回当前元素所有子元素的数组... 用于遍历XML文档的DOM元素方法 代码如下: getElementById(id)(document):获取有指定唯一ID属性值文档中的元素; getElementsByT
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
用java递归dom解析器解析遍历Xml文档
Java Dom4jHelper.java XML文件操作类下载,可实现解析xml文档,遍历文档,遍历解析元素,获得根元素,修改xml某节点的值,输出文件路径及文件名,将xml转换为字符串,字符串转换为文档等功能。
利用DOM规范,可以实现DOM文档和XML之间的相互转换,遍历、操作相应DOM文档的内容。可以说,要自由的操纵XML文件,就要用到DOM规范。DOM文档中的逻辑结构可以用节点树的形式进行表述。通过对XML文件的解析处理,XML...
Java XML文件操作类:Dom4jHelper源代码文件下载,实现的功能:解析url xml文档,遍历解析文档,遍历解析元素,解析文件,获得根元素,修改xml某节点的值,输出文件路径及文件名 如果输出文件为null,则默认为原xml文件,...
通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...
DOM将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息;这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也...
Dom4j对Java xml文件的操作。对节点的增删改查,把字符串读成XML,循环遍历节点!附带所要用的jar包,还有说明!
需要在lib下拷入dom4j包,jdom.jar包。路径需要自己改。四种方式解析创建xml文件,原始的遍历xml,以及一般运用读取,更新xml。
JDOM对于大多数Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出...
自己写的一个XML文件处理,通过DOM4J,实现了逐一遍历整个XML文件,直到找到找到需要修改节点,退出程序,这个代码里面只调试了updatesinglenodevalue这一个函数,其他要用,自己调试,这个工程不需更改就可以使用,...
在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为)。 预 备 测试环境: AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP...
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API...这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
javax.xml.crypto.dsig.dom javax.xml.crypto.dsig 包特定于 DOM 的类。 javax.xml.crypto.dsig.keyinfo 用来解析和处理 KeyInfo 元素和结构的类。 javax.xml.crypto.dsig.spec XML 数字签名的参数类。 javax.xml...
使用dom4j读写XML文档 1.获取文档的根节点. Element rootElm = document.getRootElement(); 2.取得某节点的单个子节点. Element memberElm=root.element("member");// "member"是节点名 3.取得节点的文字 String ...
String fromRead=Dom4jTest2.class.getClassLoader().getResource("xml/map1.xml").getPath(); List<Pois> list=new ArrayList(); SAXReader saxReader = new SAXReader(); org.dom4j.Document document=...
Dom4jHelper Java XML操作实例类,解析url xml文档,遍历解析文档,遍历解析元素,解析文件,获得根元素,修改xml某节点的值,输出文件路径及文件名 如果输出文件为null,则默认为原xml文件,xml转换为字符串,字符串转换为...