`
haiyupeter
  • 浏览: 427659 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用dom4j和xpath

阅读更多

使用dom4j和XPath
配置开发包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar(XPath必备)
 
取某一节点
Element root = (Element) document.selectSingleNode("//root");
 
取某一节点的属性
Attribute attribute = (Attribute) document.selectSingleNode("//root/cell/@value");
 
使用经验
我们在做系统间交互时,通常通过自定义的xml文件进行数据交换。例如:系统A需要向系统B传输一个xml字串的条件如下:

   <?xml version="1.0" encoding="gb2312"?>  
   <root systemid="Darenkou" userid="admin" default="DA" icon="0000">  
         <cell value=""/>  
   </root>  
  



系 统A只需填充cell节点的value属性值,我的建议是将这段xml写成本地文件,每次传输时首先读取xml文件,再置cell节点的 value属性值,然后将xml对象转变成字串传给系统B。这样的优点是:一般systemid="Darenkou" userid="admin" default="DA" icon="0000" 是传输参数,当有所变动时只需修改本地文件即可。
 
详细例程
test.xml


   
       
           
            <?xml version="1.0" encoding="gb2312"?>;
            <root id="TK12" name="管理员" value=""/>;
          
       
   


 
XmlTest.java


   

import java.io.File;
            import java.io.IOException;
            import java.io.StringWriter;
            import java.io.UnsupportedEncodingException;
            import java.util.HashMap;
            import java.util.Iterator;
            
            import org.dom4j.Document;
            import org.dom4j.DocumentException;
            import org.dom4j.Element;
            import org.dom4j.io.OutputFormat;
            import org.dom4j.io.SAXReader;
            import org.dom4j.io.XMLWriter;
            
            public class XmlTest {
                   public static String generateXml(HashMap map) {
                          String strXml = null;
            
                          if (map != null) {
            
                                 SAXReader reader = new SAXReader();
                                 Document document = null;
            
                                 try {
                                        document = reader.read(new File("D:/test.xml"));
                                 } catch (DocumentException e) {
                                        e.printStackTrace();
            
                                 }
            
                                 Element root = (Element) document.selectSingleNode("//root");
                                 root.attribute("value").setValue("分布");
            
                                 Iterator iter = map.keySet().iterator();
                                 while (iter.hasNext()) {
                                        String key = (String) iter.next();
                                        String value = (String) map.get(key);
            
                                        Element element = root.addElement("cell").addAttribute("value",
                                                      key);
                                        element.addElement("element").addAttribute("type", "数值")
                                                      .addAttribute("name", "人数").addText(value);
            
                                 }
            
                                 strXml = encodeXml(document, "gb2312");
                          }
            
                          return strXml;
                   }
            
                   private static String encodeXml(Document document, String aEncode) {
                          // 进行编码转换
                          StringWriter sw = new StringWriter();
            
                          OutputFormat format = OutputFormat.createPrettyPrint();
                          format.setEncoding(aEncode);
            
                          try {
                                 XMLWriter writer = new XMLWriter(format);
                                 writer.setWriter(sw);
                                 writer.write(document);
                          } catch (UnsupportedEncodingException e) {
                                 e.printStackTrace();
                          } catch (IOException e) {
                                 e.printStackTrace();
                          }
            
                          return sw.toString();
                   }
            
                   public static void main(String[] args) {
                          HashMap map = new HashMap();
                          map.put("上海", "200");
                          map.put("北京", "300");
                          map.put("天津", "300");
            
                          System.out.println(generateXml(map));
            
                   }
            }
 

 

分享到:
评论

相关推荐

    dom4j和xpath的jar包

    将DOM4J和XPath结合使用,可以实现高效、准确的XML处理。DOM4J可以加载和解析XML文档,然后利用XPath表达式进行数据检索。这种方式避免了传统遍历DOM树的低效,尤其是在大型XML文档中,XPath的查询性能优势尤为明显...

    dom4j及xpath jar包

    要使用DOM4J和XPath,首先需要在项目中引入相应的jar包。提供的压缩包中包含的"dom4j"文件,很可能就是DOM4J库的jar包。通常,还需要一个支持XPath的jar包,如jaxen,它为DOM4J提供了XPath的支持。如果你的描述中...

    dom4j 和xpath

    DOM4J和XPath是XML处理领域中的两个重要概念,它们在Java编程中有着广泛的应用。DOM4J是一款灵活且功能强大的...在Java项目中,使用DOM4J配合XPath可以极大地提高开发效率和代码的可读性,尤其在处理复杂XML文档时。

    dom4j中xpath的使用

    下面是一个简单的示例,展示如何使用DOM4J和XPath找到XML文档中的特定元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Node; import org.dom4j.XPath; // 创建XML...

    xml+dom4j+xpath资料

    我们可以使用DOM4J和XPath找到所有年龄: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.XPath; // 解析XML文档 Document document = DocumentHelper.parseText...

    dom4j中XPath用法

    要使用DOM4J的XPath功能,首先需要引入DOM4J库和JAXP(Java API for XML Processing),后者提供了XPath的实现。在Java项目中,这通常通过添加对应的依赖完成。例如,在Maven项目中,可以在pom.xml文件中加入以下...

    dom4j和xpath必备jar包

    DOM4J和XPath结合使用,可以实现高效的XML处理。例如,通过DOM4J解析XML文档,然后使用XPath表达式来快速定位到特定的元素或属性,从而进行读取或修改。这对于处理大型XML文档或者需要频繁查询XML数据的场景尤其有用...

    DOM4J_xpath

    ### DOM4J与XPath详解 #### 一、DOM4J简介 **DOM4J**是一款由dom4j.org开发的开源XML解析库,专为Java平台设计,它不仅支持DOM和SAX这...对于想要学习DOM4J和XPath的朋友来说,本文提供了深入的理解和技术实践指南。

    dom4j用到的xpath\dom4j等一系列jar包

    下面是一个简单的示例,展示如何使用DOM4J和XPath: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.XPath; // 创建XML文档 String xml = ...

    使用DOM4J和xpath解析XML(一)

    NULL 博文链接:https://bbsanwei.iteye.com/blog/266394

    dom4j及xpath软件开发包

    在提供的压缩包"新建文件夹"中,可能包含了DOM4J和XPath相关的JAR文件,这些文件通常用于Java项目中,通过引入这些库,开发者可以直接在代码中使用DOM4J和XPath的功能。在项目构建过程中,将这些JAR添加到类路径...

    dom4j及xpath基础应用

    例如,以下代码展示了如何使用DOM4J和XPath选取特定元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.XPath; // 创建XML文档 String xml...

    dom4j和xpath帮助文档

    **DOM4J与XPath简介** DOM4J是一个Java库,用于处理XML文档,它提供了灵活且高性能的API,使得XML的解析、创建、查询和修改变得简单。...这份文档集合将为学习和使用DOM4J及XPath提供宝贵的参考资料。

    dom4j_xpath_junitTest.zip

    综上所述,DOM4J、XPath和JUnit是Java XML处理和测试的重要工具,它们的结合使用可以帮助开发者高效、准确地处理XML数据并确保代码质量。在实际项目中,熟练掌握这些工具的使用将极大提升开发效率和代码的可维护性。

    Dom4J采用XPath操纵XML教程及例子

    接下来,我们将探讨如何在Java中使用Dom4J和XPath: 1. **引入依赖**:首先,确保你的项目中已经包含了Dom4J和XPath相关的jar包。这通常可以通过Maven或Gradle等构建工具来添加依赖。 2. **解析XML文档**:使用Dom...

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    Dom4j 、XPath解析Xml所需的jar包和dom4j API

    在Java编程中,解析XML文档通常需要借助库,如DOM4J和XPath。DOM4J是一个灵活且功能强大的开源Java XML API,它提供了XML的读取、写入、修改和遍历等功能。XPath则是W3C标准中的一个查询语言,用于在XML文档中查找...

    无标题dom4j 和XPath jar包

    【标题】: "无标题dom4j 和XPath jar包" 描述了本次文件内容的核心,主要涉及两个Java库——dom4j与XPath相关的jar包。这两个库在Java开发中广泛用于XML处理,尤其是在数据解析、文档操作以及信息提取等方面。 **...

    [转]学习:Dom4j和Xpath

    Dom4j提供了一个易于使用的API,用于构建、修改和解析XML文档,而XPath则为在文档中高效地定位和选取节点提供了简洁的语言。两者结合使用,可以极大地提高XML处理的效率和灵活性。在实际开发中,了解并熟练运用这...

    dom4j集成Xpath写法

    http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 的doc文档。

Global site tag (gtag.js) - Google Analytics