`

jdom xpath 读取xml节点数据

    博客分类:
  • J2EE
阅读更多
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class Sample2 { 
public static void main(String[] args) throws Exception {
 SAXBuilder sb = new SAXBuilder();
 Document doc = sb.build("sample.xml");
 Element root = doc.getRootElement();
 List list = XPath.selectNodes(root, "/HD/disk");
 for (int i = 0; i > list.size(); i++) {
  Element disk_element = (Element) list.get(i);
  String name = disk_element.getAttributeValue("name");
  String capacity = ( (Text) XPath.selectSingleNode(disk_element,
  "//disk[@name='" + name + "']/capacity/text()")).getTextNormalize();
  String directories = ( (Text) XPath.selectSingleNode(disk_element, 
  "//disk[@name='" + name + "']/directories/text()")).getTextNormalize();
  String files = ( (Text) XPath.selectSingleNode(disk_element, 
  "//disk[@name='" + name + "']/files/text()")).getTextNormalize();
  System.out.println("磁盘信息:");
  System.out.println("分区盘符:" + name);
  System.out.println("分区容量:" + capacity);
  System.out.println("目录数:" + directories);
  System.out.println("文件数:" + files);
  System.out.println("-----------------------------------");
 }
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Element root = orders.getChild("allHiss");
        List allHiss = root.getChildren();// 客户端传来的所有令的当前次修改的信息
        DsoItemList dsoList = this.orderList.getDsoList();// 服务器上的综合令
        // 根据当前这次历史信息,把有信息的令的历史更新,以便之后保存
        for (Iterator iterator = allHiss.iterator(); iterator.hasNext();) {
            Element hiss = (Element) iterator.next();// 拿到一条修改信息
            String currentUnit = hiss.getAttributeValue("unit");
            String currentContent = hiss.getAttributeValue("content");
            String uM = hiss.getAttributeValue("uM");
            String cM = hiss.getAttributeValue("cM");
            String index = hiss.getChildText("index");// 得到这个是票面的第几条令
            Element his = hiss.getChild("His");// 拿到实际的修改信息
            hiss.removeContent();// 移除与子节点的关联 以便把子节点加到新的父节点上
            OprDsoDispatchOrderItem item = (OprDsoDispatchOrderItem) dsoList.get(Integer.parseInt(index) - 1);// 拿到对应index的order
            String hissString = item.getHiss();// 拿到此order的之前的历史信息 看下是否需要初次创建
            if (hissString == null) {// 第一次 创建根节点hiss
                Element hissE = new Element("Hiss");
                hissE.addContent(his);
                hissE.setAttribute("unit", currentUnit);
                hissE.setAttribute("content", currentContent);
                hissE.setAttribute("uM", uM);
                hissE.setAttribute("cM", cM);
                item.setHiss(elementToString(hissE, ""));// 把历史信息写入
            } else {
                StringReader sr = new StringReader(hissString);// 把之前的历史信息转换成document
                InputSource is = new InputSource(sr);
                Element oldhiss = null;
                try {
                    oldhiss = (new SAXBuilder()).build(is).getRootElement();// 拿到根节点
                    // Hiss
                    oldhiss.addContent(his);
                    oldhiss.setAttribute("unit", currentUnit);
                    oldhiss.setAttribute("content", currentContent);
                    if (oldhiss.getAttributeValue("uM").equals("n")) {
                        oldhiss.setAttribute("uM", uM);
                    }
                    if (oldhiss.getAttributeValue("cM").equals("n")) {
                        oldhiss.setAttribute("cM", cM);
                    }
                    item.setHiss(elementToString(oldhiss, ""));
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new RuntimeException("保存修改历史时出错", e);
                }
            }
        }

 

 

 

//                String hissString = orderItem.getHiss();// 拿到之前的历史信息
//                if (hissString != null) {// 没有的话不做任何操作
//                    StringReader sr = new StringReader(hissString);// 把之前的历史信息转换成document
//                    // 以便添加到element对象
//                    // eleSubTableName上
//                    InputSource is = new InputSource(sr);
//                    try {
//                        Document doc = (new SAXBuilder()).build(is);
//                        Element oldhiss = doc.getRootElement();// 拿到根节点 Hiss
//                        doc.removeContent();// 移除与子节点的关联 以便把子节点加到新的父节点
//                        eleSubTableName.addContent(oldhiss);// 添加完毕
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }

 

 

for (int i = 0; i < interInfoStack.size(); i++) {
            Element everyStepDsos=interInfoStack.get(i).getDsos();
            everyStepDsos.detach();
            logger.info(CommonFunction.writeXML(everyStepDsos));
            List children =everyStepDsos.getChildren("DSO");
            for (int j = 0; j < children.size(); j++) {
                Element dso=(Element) children.get(j);
                dso.detach();
                dsos.addContent(dso);
            }
        }

 

分享到:
评论
1 楼 swen00 2009-08-19  

相关推荐

    xpath读取XML节点

    在Java编程中,JDOM库是一个流行的解析和操作XML的工具,它提供了对XPath的支持,使得我们可以方便地通过XPath表达式来读取XML文档的节点。 首先,理解XPath的基本语法是非常重要的。XPath表达式由路径表达式组成,...

    jdom 读取XML 文件

    在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,尤其在处理结构化数据时...在实际应用中,结合JDOM与其他工具,如XPath表达式来查询XML数据,可以进一步提高代码的灵活性和效率。

    基于jdom的xpath解析数据

    本主题将深入探讨如何使用Java中的JDOM库来实现XPath解析,从而高效地提取XML数据。 JDOM是一个纯Java的XML处理库,它提供了一种简单的方式来构建、修改和读取XML文档。与DOM(Document Object Model)相比,JDOM...

    JDOM读取XML,并且创建XML

    在IT行业中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,尤其在处理结构化数据时。XML文件具有自解释性,使得它容易被人和机器阅读。本篇我们将聚焦于JDOM库,这是一个Java API,专门用于...

    jdom-test-1.1.zip_Java Test_java 操作xml_jdom_jdom xml_xml java jd

    JDOM,全称为Java Document Object Model,是一个专为Java设计的API,用于读写XML文档。它提供了一个直观的、基于树的API,使得开发者能够轻松地创建、修改和处理XML文档。JDOM的核心类包括`Element`、`Attribute`和...

    JDOM操作xml文件的xmlBean

    3. **添加XML节点** - 创建新的`Element`对象。 - 将新元素添加到父元素中。 - 输出更新后的`Document`对象。 4. **删除XML节点** - 查找需要删除的元素。 - 使用`removeChild()`方法移除该元素。 - 输出更新...

    XML解析,简单易学(Jdom+XPath): 精简Demo(含jar包).rar

    在"Jdom 精简Demo"中,可能包含了使用JDOM2解析XML的示例代码,展示了如何创建Document对象、使用XPath选取节点以及对XML进行操作。而"项目结构+运行结果.jpg"文件则可能显示了项目的目录结构和运行后的结果,帮助...

    jdom API , XML读取

    JDOM的主要目标是简化XML在Java应用程序中的使用,通过提供一种直接映射到Java对象模型的结构,使得开发者能够更直观地处理XML数据。 XML(Extensible Markup Language)是一种标记语言,广泛用于数据交换、配置...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它...在实际开发中,根据具体需求,你可以结合JDOM提供的各种方法进行XML文档的读取、修改和创建,以实现灵活的数据处理。

    dom+xpath的jar

    在Java开发中,使用DOM4J或其他类似库(如JDOM、XMLBeans等)结合XPath,可以高效地读取、修改XML数据。这些库提供了API,使得开发者能够轻松地将XPath表达式转换为实际的节点操作,从而实现对XML文档内容的动态查询...

    jdom_xml.rar_jdom_xml

    同时,DOM4J的XPath支持使得通过表达式查找和修改XML节点变得非常方便。 **JDOM与DOM4J的比较** 1. **性能** 在内存消耗方面,DOM4J由于提供了更多功能,可能会比JDOM消耗更多资源。而SAXBuilder在JDOM中通常用于...

    jdom读取xml详细例子

    JDOM 是一个用于处理 XML 文档的 Java 库,它提供了高效、便捷的方式来解析、创建和操作 XML 数据。本篇文章将详细介绍如何使用 JDOM 来读取 XML 文件,并通过一个详细的示例代码来帮助理解其基本操作。 首先,我们...

    JDOM解析XML

    在实际应用中,JDOM可以结合XPath(通过jaxen.jar实现)来快速定位XML文档中的特定节点,提高开发效率。例如,通过`XPathFactory`创建`XPath`对象,然后调用`compile()`方法编译XPath表达式,最后使用`evaluate()`...

    JDOM对XML文件的读取

    5. 查询和过滤:JDOM还提供了XPath支持,通过`XPathFactory`和`XPath`对象可以查询XML文档中的特定节点。例如,获取所有名为`item`的元素: ```java import org.jdom2.xpath.XPathFactory; import org.jdom2.xpath....

    使用JDOM来生成XML文档

    例如,你可以创建一个`Blacklist`类,将黑名单数据读取到内存,然后使用JDOM将其转换为XML结构。 总之,JDOM是一个强大的工具,适合Java开发者用来生成和操作XML文档。它简化了XML处理过程,使你能够更专注于业务...

    jdom解析xml用到的jar包

    在实际开发中,JDOM通常与XPath(XML Path Language)结合使用,XPath允许你通过路径表达式来定位XML文档中的特定节点,这极大地增强了查找和操作XML数据的能力。例如,使用JDOM的XPath支持(需要添加额外的XPath库...

    JDOM相关解析XML文件实例

    **正文** XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它在IT领域中广泛应用于数据交换、配置文件...在实际项目中,结合JDOM和其他Java库,如XPath或XSLT,可以实现更复杂的XML处理任务。

    Demo4j和XPath解析XML的文件路径表达式(ZVON.org - X 路径教程)

    XPath是XML的一个重要组成部分,它提供了一种定位XML文档中节点的简洁而强大的方式。本教程将重点讨论如何使用Java库Demo4j与XPath一起工作,以解析XML文件中的路径表达式。 首先,我们需要理解XPath的基本概念。...

    用jdom简化xml 编程 关于xml

    此外,JDOM还支持XML Schema和DTD验证,以及XPath表达式来定位XML文档中的特定节点。 然而,JDOM并非没有缺点。它的内存消耗相对较高,因为它会将整个XML文档加载到内存中,这在处理大型XML文件时可能会成为一个...

    JDOM SAX解析XML的对比及相关内容

    在实际应用中,如果XML文档较小,且需要频繁查询或修改数据,JDOM可能是更好的选择,因为它的API更加直观,可以快速定位和修改数据。相反,如果XML文件非常大,或者只需要顺序读取数据,SAX则是更优的选择,因为它...

Global site tag (gtag.js) - Google Analytics