`
wenjinglian
  • 浏览: 820330 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

XML读写相关操作

    博客分类:
  • JAVA
阅读更多

 

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * XML相关操作
 * 
 * @author nassir wen
 */
public class XmlHelper {

    /**
     * 
     * 通过已知xml字符串创建document对象
     * 参考:http://dennis-zane.iteye.com/blog/57542
     * @param xmlStr
     * @return
     * @throws DocumentExceptionss
     */
    public static Document createDocByXmlStr(String xmlStr)
            throws DocumentException {
        return DocumentHelper.parseText(xmlStr);
    }

    /**
     * 
     * 通过xml文件路径创建已知字符串document对象
     * 
     * @param path
     * @return
     * @throws DocumentException
     */
    public static Document createDocByPath(String path)
            throws DocumentException {
        SAXReader saxReader = new SAXReader();
        return saxReader.read(path);
    }

    /**
     * 通过xml字节流Document对象
     * 
     * @return
     */
    public static Document createDoc(InputStream in) throws DocumentException {
        SAXReader saxReader = new SAXReader();
        return saxReader.read(in);
    }

    /**
     * 创建Document对象
     * 
     * @return
     */
    public static Document createDoc() {
        return DocumentHelper.createDocument();
    }

    /**
     * 获取单个node
     * 
     * @param xPath
     * @return
     */
    public static Node getNode(Document doc, String xPath) {
        return doc.selectSingleNode(xPath);
    }

    /**
     * 获取集合nodes
     * 
     * @param xPath
     * @return
     */
    public static List<Node> getNodes(Document doc, String xPath) {
        return doc.selectNodes(xPath);
    }

    /**
     * 获取属性值
     * 
     * @param node
     * @param attrName
     * @return
     */
    public static String getAttrVal(Node node, String attrName) {
        Element e = (Element) node;
        return e.attributeValue(attrName);
    }

    /**
     * 返回构造好的xml字符串
     * 
     * @param doc
     * @return
     */
    public static String outXmlStr(Document doc) {
        return doc.asXML();
    }

    /**
     * 保存xml到文件
     * 
     * @param fileName
     * @param doc
     * @throws IOException
     */
    public static void saveXml(String fileName, Document doc)
            throws IOException {// 将Document输出到文件
        // 读取文件
        FileWriter fileWriter = new FileWriter(fileName);
        // 设置文件编码
        OutputFormat xmlFormat = new OutputFormat();
        xmlFormat.setEncoding("GB2312");
        // 创建写文件方法
        XMLWriter xmlWriter = new XMLWriter(fileWriter, xmlFormat);
        // 写入文件
        xmlWriter.write(doc);
        // 关闭
        xmlWriter.close();
    }

    public static void main(String[] args) {
        // 测试
        try {
            Document doc = XmlHelper.createDoc();
            // 设置编码
            doc.setXMLEncoding("GB2312");
            Element root = doc.addElement("root");
            Element op_code = root.addElement("op_code");
            Element op_name = root.addElement("op_name");
            Element op_user = root.addElement("op_user");
            Element op_passwd = root.addElement("op_passwd");
            Element op_time = root.addElement("op_time");
            Element sp_id = root.addElement("sp_id");
            Element package_id = root.addElement("package_id");
            Element total_num = root.addElement("total_num");
            Element total_amt = root.addElement("total_amt");
            Element client_ip = root.addElement("client_ip");
            op_code.setText("1013");
            op_name.setText("batch_draw");
            // 测试attr 生成
            op_name.addAttribute("test", "1001");
            op_user.setText("");
            op_passwd.setText("");
            op_time.setText("");
            sp_id.setText("");
            package_id.setText("");
            total_num.setText("");
            total_amt.setText("");
            client_ip.setText("");
            // 付款记录
            Element record_set = root.addElement("record_set");
            Element record = record_set.addElement("record");
            Element serial = record.addElement("serial");
            Element rec_bankacc = record.addElement("rec_bankacc");
            Element bank_type = record.addElement("bank_type");
            Element rec_name = record.addElement("rec_name");
            Element pay_amt = record.addElement("pay_amt");
            Element acc_type = record.addElement("acc_type");
            Element area = record.addElement("area");
            Element city = record.addElement("city");
            Element subbank_name = record.addElement("subbank_name");
            Element desc = record.addElement("desc");
            serial.setText("");
            rec_bankacc.setText("");
            bank_type.setText("");
            rec_name.setText("");
            pay_amt.setText("");
            acc_type.setText("");
            area.setText("");
            city.setText("");
            subbank_name.setText("");
            desc.setText("");
            System.out.println(XmlHelper.outXmlStr(doc));
            XmlHelper.saveXml("tenpay.xml", doc);
            // 读取
            Document docXml = XmlHelper.createDocByPath("tenpay.xml");
            System.out.println(XmlHelper.getNode(docXml,"//root/op_code").getText());
            // 获取属性名称
            System.out.println("arrt: "
                    + XmlHelper.getAttrVal(XmlHelper.getNode(docXml,"//root/op_name"),
                            "test"));
            System.out.println("-----------------------------------------------------");
            Document docStr = XmlHelper.createDocByXmlStr("<person> <name>James</name> </person>");
            System.out.println(XmlHelper.getNode(docStr,"//person/name").getText());
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
分享到:
评论

相关推荐

    XML的读写操作

    总之,WPF环境中对XML文件的读写操作是通过`XmlTextWriter`、`XmlDocument`等类来实现的,它们提供了丰富的API以满足各种需求。通过理解这些基本操作,开发者可以灵活地在WPF应用程序中存储和处理结构化的数据。

    基于MFC的XML文档读写操作

    这是一个基于MFC的XML文档的读写封装类,利用了tinyXML的解析器进行解析,然后处理解析树,并将信息封装到了具体实例中,实现了对XML文档的读写操作。 如果对XML读写有疑惑可以下下来看一看~相信会有帮助

    C# XML文件读写操作-源码

    C# XML文件读写操作源码,以及如何调用,注释详解,有任何问题请留言, 以下截取xml文件和部分调用代码段: * ++++++++++++++++++++++++++++++++++++++ &lt;?xml version="1.0" encoding="utf-8" standalone="no"?&...

    基于QT实现XML文件读写操作,解析操作

    总的来说,QT通过QDomDocument、QDomElement等类提供了完整的XML处理功能,既支持XML文件的读取、解析,也支持写入操作。无论是在应用程序配置、数据存储还是与其他系统交换数据的场景中,这些工具都能极大地简化XML...

    XML读写tinyxml

    你可以通过它来加载XML文件、创建新的XML文档、保存修改后的文档,以及执行其他与文档相关的操作。 2. **TiXmlElement**:表示XML元素,是XML文档的基本构建块。每个元素都有一个标签(tag),可以有属性...

    xml读写操作类

    总结来说,C++中进行XML读写操作主要涉及选择合适的库,理解XML的基本结构,以及熟练运用库提供的API来解析、遍历、修改和保存XML文件。通过封装成类,可以使得代码更加模块化,易于维护和扩展。

    QT中对XML进行读写操作

    本教程将详细介绍如何在QT中利用Qt XML模块进行XML的读写操作。 首先,Qt提供了两个主要的类来处理XML流:`QXmlStreamWriter`和`QXmlStreamReader`,分别用于XML的写入和读取。这两个类基于XML流模型,可以逐行或逐...

    C++ 读写XML文件

    本项目"**C++ 读写XML文件**"的代码应该包含了上述步骤的实现,通过参考和学习这个示例,开发者可以更好地理解如何在MFC环境中进行XML的读写操作。在实际应用中,可能还需要考虑XML的验证、编码问题以及更复杂的查询...

    xml读写帮助类

    3. Java XML读写操作: - 使用DOM解析器:Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口用于构建DOM树。`DocumentBuilder.parse()`方法读取XML,`Transformer.transform()`方法...

    delphi xml 读写删改操作

    在Delphi中处理XML文件是一项...在提供的压缩包文件"XML读写改删D源码"中,你可能会找到关于以上操作的示例代码,这将帮助你更好地理解和应用这些概念。仔细研究这些源码,将有助于你深入掌握Delphi中的XML操作技巧。

    用System.Xml 读写XML

    4. **特定用途读写器**:如`XmlNodeReader`和`XmlNodeWriter`,它们以`XmlNode`为源或目标进行读写操作。 ### XML节点类型 `System.Xml`定义了多种XML节点类型,包括但不限于: - `XmlDeclaration`:表示XML声明...

    Tinyxml读写xml源文件

    TinyXML是一个开源的C++库,专门用于解析和操作XML(可扩展标记语言)文档。在VC++(Visual C++)环境下,TinyXML提供了一种简单、轻量级的方式来读取和写入XML源文件,这在处理配置文件、保存游戏状态或与XML数据...

    xml读写操作

    本示例提供了一个VC++实现的XML读写操作,通过类`VC_CXmlFile`来简化这一过程,增强了代码的可读性和易用性。 在`VC_CXmlFile.sln`中,这是一个Visual Studio的解决方案文件,包含了项目的配置信息和项目依赖。打开...

    C# 服务 多线程 XMl读写

    标题中的"C# 服务 多线程 XML读写"涵盖了几个关键的编程概念,下面将分别详细介绍这些知识点。 首先,让我们来谈谈"C#"。C#是微软开发的一种面向对象的编程语言,它广泛用于构建Windows应用程序、Web应用程序、游戏...

    xml读写

    3. XML读写操作 - Java中的XML读写: - DOM解析:使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类读取XML,`TransformerFactory`和`Transformer`进行写入。 - SAX解析:通过`org.xml....

    XML的读写操作小程序

    本程序“XML的读写操作小程序”就是针对这些功能进行实现的。 读取XML文件主要涉及以下几个步骤: 1. 加载XML文档:首先,需要创建一个解析器或者DOM(Document Object Model)对象来加载XML文件。例如,在Java中...

    JSP实现对XML读写

    【JSP实现对XML读写】是Web开发中的一项重要技能,它结合了JSP(Java Server Pages)和XML(可扩展标记语言)的优势,使开发者能更灵活地处理和存储数据。XML作为一种通用的数据交换格式,具有自描述性和结构化特点...

    c#中对XML文件进行读写操作

    本篇文章将详细阐述如何在C#中进行XML文件的读写操作,包括基本概念、常用API以及实例演示。 首先,我们需要了解XML的基本结构。XML是一种自描述的语言,通过元素(Element)、属性(Attribute)和值(Value)来...

    C# 读写XML类

    本篇将深入探讨如何利用C#的XML类来实现XML的读写操作,以满足实际开发中的需求。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它的结构清晰,...

Global site tag (gtag.js) - Google Analytics