实战 JDOM

来源:互联网 发布:运城软件开发 编辑:程序博客网 时间:2024/06/16 02:57




    在开发过程中,当前后台传递数据时,如果把数据放在xml中来传递,这样可以使被传递的数据更有条理,更清晰易懂。试想一下如果在需要传递很多条数据时,如果全用getParameter("params") 这样的语句来写,肯定全有大量的代码冗余;;如果从后台向前台传数据也面临着相似的问题。
     为了解决这个问题, 我们在前台把数据存入一个隐藏的xml中。 这样到了后台,我们可以得到相应的文本元素,然后再将其转换成xml类型。 这样再操作起来就简单了很多。
    那么,接下来就说一下在java中如何用jdom解析xml。
    首先,需要清楚: jdom把xml中的内容大致分为文档(Document)、元素(Element)、文本(Text)、属性(Attribute);
    而在js中,js把xml的全部内容均当作节点来处理。比如: 元素节点,文本节点等等。
    言归正传
    一. jdom如何创建xml
    一般思路:首先创建根元素,文档元素。然后将根元素添加文档中。 然后创建子元素、文件元素、属性将这元素添加到子元素中。再将子元素添加到根元素中。 这样就形成了一个树关的xml文档了。
        例如:
        1.  以 Collumns 为根元素创建文档
    Element root = new Element("Collumns"); //所有的XML元素都是 Element 的实例,根元素也不例外
    Document doc = new Document(root);      //以根元素作为参数创建Document对象。一个Document只有一个根,即root元素。
    2. 给根元素添加子元素
    Element nameElement = new Element("name");
    3. 初始化文本元素
    Text textName = new Text("NI HAO");
    4. 将子元素及属性添加到要元素
    nameElement.addContent(textName);
        nameElement.setAttribute("name","syd");
        root.addContent(nameElement);
    5. 删除子元素
        root.removeChildren("name");
    6. 格式化输出格式
        Format format = Format.getPrettyFormat();
        format.setEncoding("UTF-8");
        format.setIndent("/t");
        format.setLineSeparator("/n");
    7. 将 JDOM 转化为 XML 文本
        XMLOutputter XMLOut = new XMLOutputter(format);
    8. 将JDOM 转化为字符串
        setInnerXML(XMLOut.outputString(doc));

    用上面这些命令就可以创建相当复杂的XML文档了。总之,JDOM非常灵活方便!如果你想进一步研究JDOM,请到官方网站去看一看:http://www.jdom.org
    二. XML文档解析
    JDOM 不但可以很方便的建立XML文档,它的另一个用处是它能够读取并操作现有的 XML 数据。
 JDOM的解析器在org.jdom.input.*这个包里,其中的DOMBuilder的功能是将DOM模型的Document解析成JDOM模型的 Document;SAXBuilder的功能是从文件或流中解析出符合JDOM模型的XML树。由于我们经常要从一个文件里读取数据,因此我们应该采用后者作为解析工具。
 解析一个xml文档,基本可以看成以下几个步骤:
 1. 实例化一个合适的解析器对象
     本例中我们使用SAXBuilder:
     SAXBuilder sb = new SAXBuilder();
    2. 实例化一个文档对象, 其中innerXML是字符串表达式
        Document doc = builder.build(new ByteArrayInputStream(innerXML.getBytes("UTF-8")));
    3. 获得根元素
        Element root = doc.getRootElement();
    4. 一旦获得了根元素,就可以方便地对它下面的子元素进行操作了。下面对Element对象的一些常用方法做简单介绍。
        getChild("childName")返回当前目录下指定名字的子节点。如果同一级有多个同名子节点,则只返回一个,如果没有则返回null值; 
        getChildren("childname")返回指定名字的子节点List集合。通过返回值就可以遍历这一级的所有同名子节点;
        getAttributeValue("name")返回指定属性的名字;
        getChildText("childname")返回指定子节点的内容文本值;
        getText()返回该元素的内容文本值。
    当然,还有许多其他方法可以http://www.jdom.org 查询。
原创粉丝点击