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

用dom4j读写数据

阅读更多
   从数据库表里面读取数据并生成一个xml文件给用户下载,下面是所用到的函数,要注意设置好输出到页面的文件头,还有的就是要作为一个文件给人下载的话要    将header里面的属性设置为attachment(也就是作为附件的形式,而不是inline,inline的话会直接打开的).

public void genXml()
        {
        logger.debug("Test=================================="+enumInfoManager.getObjectList().size());
        
        HashMap<String, Object> result = this.getDefaultMap();
        
        List<EnumInfo> list = enumInfoManager.getObjectList();
        Criterion[] criterion;
        
        Document doc=DocumentHelper.createDocument();
        Element rootElement = doc.addElement("root");
        Iterator iter = list.iterator();
                
                while(iter.hasNext())
                {
                        EnumInfo enumInfo = (EnumInfo)iter.next();
                        //EnumItem enumItem = enumItemManager.getObject(enumInfo.getId());
                        List<EnumItem> itemList = enumItemManager.getObjectList(Restrictions.eq("enumInfoId", enumInfo.getId()));
                        Element recordElement = rootElement.addElement("record");
                        
                        Element idElement = recordElement.addElement("id");
                        idElement.setText(enumInfo.getId().toString());
                        
                        Element tableNameElement = recordElement.addElement("tableName");
                        tableNameElement.setText(enumInfo.getTableName()==null?"":enumInfo.getTableName());
                        
                        Element fieldNameElement = recordElement.addElement("fieldName");
                        fieldNameElement.setText(enumInfo.getFieldName()==null?"":enumInfo.getFieldName());
                        
                        Element enumNameElement = recordElement.addElement("enumName");
                        enumNameElement.setText(enumInfo.getEnumName()==null?"":enumInfo.getEnumName());
                        
                        Element statusElement = recordElement.addElement("status");
                        statusElement.setText(enumInfo.getStatus()==null?"":enumInfo.getStatus());
                        
                        Element systemFlagElement = recordElement.addElement("systemFlag");
                        systemFlagElement.setText(enumInfo.getSystemFlag()==null?"":enumInfo.getSystemFlag());                        
                                                
                        Iterator iiter = itemList.iterator();                        
                        
                        while(iiter.hasNext())
                        {
                                EnumItem enumItem = (EnumItem)iiter.next();                
                                
                                Element itemElement = recordElement.addElement("item");
                                                                
                                Element idEle = itemElement.addElement("id");
                                idEle.setText(enumItem.getId().toString());
                                
                                Element fieldEle = itemElement.addElement("fieldValue");
                                fieldEle.setText(enumItem.getFieldValue()==null?"":enumItem.getFieldValue());
                                
                                Element displayEle = itemElement.addElement("displayValue");
                                displayEle.setText(enumItem.getDisplayValue()==null?"":enumItem.getDisplayValue());
                                
                                Element infoIdEle = itemElement.addElement("enumInfoId");
                                infoIdEle.setText(enumItem.getEnumInfoId()==null?"":enumItem.getEnumInfoId().toString());
                                
                                Element orderEle = itemElement.addElement("displayOrder");
                                orderEle.setText(enumItem.getDisplayOrder()==null?"":enumItem.getDisplayOrder().toString());
                                
                                Element statusEle = itemElement.addElement("status");
                                statusEle.setText(enumItem.getStatus()==null?"":enumItem.getStatus());
                        }
                }
                
                 try
                {
                    //Writer out=new FileWriter("c:\\enum.xml");
                                this.getResponse().setHeader("Pragma","No-cache");
                                this.getResponse().setHeader("Cache-Control","no-cache");
                                this.getResponse().setDateHeader("Expires", 0);
                                this.getResponse().addHeader("Content-disposition", "attachment" + "; filename=\"" + "enum.xml" + "\"");

                                this.getResponse().setContentType("text/xml");
                    OutputFormat format=OutputFormat.createCompactFormat();
                    format.setEncoding("UTF-8");
                    XMLWriter writer=new XMLWriter(this.getResponse().getOutputStream(),format);
                    writer.write(doc);
                    writer.close();
                    this.getResponse().flushBuffer();
                    //System.out.println("生成xml文件成功!");
                   
                }
                catch(IOException e)
                {
                    e.printStackTrace();
                    result.put(SUCCESS, false);
                    outJson(result);
                    //System.out.println("生成失败了!");
                }               
        }


    这里是解析xml文件函数,有一点要注意的就是要设置好reader的编码,一开始我用的gbk,读取的时候有错误,后来改成用gbk的编码方式就行了.

public void readXml(File file)
        {
            SAXReader reader = new SAXReader();
            reader.setEncoding("utf-8");   //这里是关键设置
            Document doc = null;
            try
            {
                    doc = reader.read(file);
                    
            }
            catch(DocumentException e)
            {
                    e.printStackTrace();
            }
            
            Element rootEle = doc.getRootElement();
            Iterator iter = rootEle.elementIterator("record");
            while(iter.hasNext())
            {
                    Element recordEle = (Element)iter.next();
                    
                    String id = recordEle.elementTextTrim("id");
                    String tableName = recordEle.elementTextTrim("tableName");
                    String fieldName = recordEle.elementTextTrim("fieldName");
                    String enumName = recordEle.elementTextTrim("enumName");
                    String status = recordEle.elementTextTrim("status");
                    String systemFlag = recordEle.elementTextTrim("systemFlag");
                    
                    System.out.println(id);
                    System.out.println(tableName);
                    System.out.println(fieldName);
                    System.out.println(enumName);
                    System.out.println(status);
                    System.out.println(systemFlag);
                    
                    Iterator iiter = recordEle.elementIterator("item");
                    
                    while(iiter.hasNext())
                    {
                            Element itemEle = (Element)iiter.next();
                            
                            String iid = itemEle.elementTextTrim("id");
                            String fieldValue = itemEle.elementTextTrim("fieldValue");
                            String displayValue = itemEle.elementTextTrim("displayValue");
                            String enumInfoId = itemEle.elementTextTrim("enumInfoId");
                            String displayOrder = itemEle.elementTextTrim("displayOrder");
                            String istatus = itemEle.elementTextTrim("status");
                            
                            System.out.println(iid);
                            System.out.println(fieldValue);
                            System.out.println(displayValue);
                            System.out.println(enumInfoId);
                            System.out.println(displayOrder);
                            System.out.println(istatus);
                    }
            }
}
分享到:
评论

相关推荐

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    dom4j读写xml

    总结,DOM4J作为一款强大的XML处理工具,不仅提供了丰富的API,还支持高效的读写操作和XPath查询,使得开发者能够轻松地进行XML文档的处理和操作。无论是在小型项目还是大型企业级应用中,DOM4J都是处理XML不可或缺...

    dom4j读写xml文件

    在你的`analysisXml`示例中,很可能是通过DOM4J库读取了一个名为`dom4j.xml`的文件,分析其结构,提取或修改数据,然后再将结果写回新的XML文件。这个过程可能包括获取特定元素、遍历元素树、修改属性值,甚至可能...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    java中dom4j读写XML

    在提供的压缩包中,可能包含了dom4j的jar文件,解压后将其引入项目,就可以开始使用DOM4J进行XML操作了。 DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理...

    Dom4j读写XML

    以下是对Dom4j读写XML的详细讲解: 一、Document对象相关 1. **读取XML文件**:通过`SAXReader`实例化并调用`read()`方法,可以将XML文件读取为`Document`对象。例如: ```java SAXReader reader = new ...

    dom4j关于xml读写的例子里面还有dom4j的jar包

    除了基本的读写操作,DOM4J还支持XPath查询,这是一种强大的定位XML元素的方式。通过`XPathExpression`和`XPathFactory`,你可以编写XPath表达式来查找XML文档中的特定节点。例如,`//elementName`可以匹配所有名为`...

    利用dom4j读写xml实例xmldemo

    本实例"xmldemo"将向我们展示如何利用DOM4J进行XML的读写操作。 首先,理解DOM4J的核心概念。DOM4J使用了Document对象来表示整个XML文档,Element代表XML的元素节点,Attribute代表属性,Text代表文本内容。通过...

    dom4j需要的包

    这个版本1.6.1是DOM4J的一个稳定版本,提供了许多特性,如读写XML文件、构建和修改XML结构、执行XPath查询、事件驱动的解析器以及XML Schema支持等。 学习帮助文档`0_02013011112572651533851383.chm`通常是一个...

    dom4j-2.0.3.zip

    在实际开发中,DOM4J常用于XML配置文件的读写,如Spring框架的配置文件处理。此外,它还广泛应用于数据交换、XML数据的序列化与反序列化,以及XML文档的转换等场景。 五、API使用示例 以下是一个简单的示例,展示...

    dom4j 解析(读取) xml 节点数据

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J...在实际项目中,DOM4J常被用于数据交换、配置文件读写等场景。

    dom4j-2.1.3.zip

    `就展示了如何使用DOM4J来选取XML文档中的特定节点。`selectSingleNode(String xpath)`方法通过XPath表达式选取文档中的唯一节点,这在处理复杂结构的XML时非常有用。 XPath是一种强大的路径语言,用于在XML文档中...

    dom4j 2.1.1

    DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大...无论是在简单的XML读写,还是复杂的XML操作和处理,DOM4J都能提供强大而灵活的支持。

    dom4j_XML.rar_DOM4J_dom4j xml java_java xml_读写xml

    6. **示例代码**:压缩包中的“dom4j读写xml文件.htm”可能包含了具体的代码示例,演示了如何使用DOM4J读取和写入XML文件。通常,这些示例会包括打开XML文件、获取根元素、遍历元素、修改元素内容、以及保存修改后的...

    dom4j-2.1.1.jar

    四、DOM4J与其他XML库的比较 DOM4J与JDOM、XOM等其他XML处理库相比,其优势在于功能全面、性能优秀和广泛的社区支持。虽然Java标准库中的JAXB和DOM API提供了XML处理的基础功能,但DOM4J因其简洁的API和强大的功能...

    dom4j解析xml详解

    DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...

    java dom4j jar包+dom4j API

    **DOM4J-API.zip**:这个压缩包可能包含了DOM4J库的API文档,开发者可以从中查找具体的类、方法和接口,了解它们的使用方式和功能。通常,API文档会提供详细的说明和示例代码,帮助开发者更好地理解和使用DOM4J库。 ...

    dom4j学习资料_dom4j-1.6.1-API.chm

    5. **Reader/Writer**: DOM4J提供了一组流式接口,用于读写XML文件,可以实现高效的输入输出操作。 6. **Namespace**: 处理XML命名空间,DOM4J提供了方便的方法来处理具有命名空间的XML文档。 7. **Mutation**: 支持...

Global site tag (gtag.js) - Google Analytics