package com.test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
* 用JDom生成和解析字符型的XML格式内容
* @author rzy
* @version 1.0
* */
public class JDomXmlDoc
{
/**
* 下行信息MT请求
* @param username 用户名
* password 密码
* transcationID 通信ID
* msg_time 信息时间
* msgID 信息唯一ID
* Msg_type 信息类型
* Src_addr 接收信息的通道号
* Dst_addr 手机号码
* LinkID linkid
* ServiceIOD 产品ID
* Content 下行信息内容
* pushurl url地址
* @return docXml xml格式的下行信息MT请求
* */
public String MTSubmitReq(String username,String password,String transcationID,String msg_time,String msgID,String Msg_type,String Src_addr,String Dst_addr,String LinkID,String ServiceIOD,String content,String pushurl)
{
Document doc = new Document();
Element root = new Element("root");
root.addContent(new Element("username").setText(username));
root.addContent(new Element("password").setText(password));
root.addContent(new Element("transcationID").setText(transcationID));
root.addContent(new Element("msg_time").setText(msg_time));
root.addContent(new Element("msgID").setText(msgID));
root.addContent(new Element("Msg_type").setText(Msg_type));
root.addContent(new Element("Src_addr").setText(Src_addr));
root.addContent(new Element("Dst_addr").setText(Dst_addr));
root.addContent(new Element("LinkID").setText(LinkID));
root.addContent(new Element("ServiceIOD").setText(ServiceIOD));
root.addContent(new Element("content").setText(content));
root.addContent(new Element("pushurl").setText(pushurl));
doc.addContent(root);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(baos); //用PrintWriter可以解决生成编码为UTF-8格式的XML内容出现中文乱码的问题
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
XMLOutputter docWiter = new XMLOutputter();
docWiter.setFormat(format);
try {
docWiter.output(doc, pw);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String docXml = baos.toString();
return docXml;
}
/**
* 解析字符格式的xml内容
* @param docXml 字符格式的xml内容
* */
public void MTSubmitRsp(String docXml)
{
SAXBuilder builder = new SAXBuilder();
StringReader sr = new StringReader(docXml);
Document doc = new Document();
try {
doc = builder.build(sr);
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Element foo = doc.getRootElement();
List list = foo.getChildren();
for(int i = 0;i<list.size();i++)
{
Element el = (Element) list.get(i);
System.out.println(el.getName()+":"+el.getText());
}
}
//示例测试
public static void main(String[] args)
{
JDomXmlDoc mxt = new JDomXmlDoc();
String str = mxt.MTSubmitReq("admin", "123456", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
System.out.println(str);
mxt.MTSubmitRsp(str);
}
}
生成xml格式内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<username>admin</username>
<password>123456</password>
<transcationID>3</transcationID>
<msg_time>4</msg_time>
<msgID>5</msgID>
<Msg_type>6</Msg_type>
<Src_addr>7</Src_addr>
<Dst_addr>8</Dst_addr>
<LinkID>9</LinkID>
<ServiceIOD>10</ServiceIOD>
<content>11</content>
<pushurl>12</pushurl>
</root>
解析xml格式内容如下:
username:admin
password:123456
transcationID:3
msg_time:4
msgID:5
Msg_type:6
Src_addr:7
Dst_addr:8
LinkID:9
ServiceIOD:10
content:11
pushurl:12
分享到:
相关推荐
生成XML字符串时,JDOM提供了一套直观的API来构造和序列化XML文档。 5. StAX (Streaming API for XML) StAX是Java提供的一个流式解析API,它介于DOM和SAX之间。像SAX一样,StAX也是事件驱动的,但它允许程序员以拉...
4. 输出XML,使用`XMLOutputter`类将`Document`对象转换为字符串或写入文件。 **示例代码** ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import org.jdom2...
例如,可以添加新元素、删除元素、修改属性值,然后使用`OutputFormat`和`Transformer`将DOM树转换回XML字符串或写入文件。 **5. 性能与优化** 虽然JDOM提供了方便的API,但其性能相对较低,因为整个XML文档会一次...
4. **XML解析与生成**:JDOM提供API来解析XML文件,将XML文档转化为内存中的对象结构,这使得可以方便地遍历和修改XML内容。同样,也可以使用JDOM来生成新的XML文档,包括从数据库中提取的数据。 5. **JDOM基本使用...
在Java应用程序中,JDOM扮演着核心角色,允许开发者以面向对象的方式处理XML数据,极大地简化了XML的解析和生成过程。 JDOM-1.1是该库的一个版本,它包含了对XML标准的全面支持以及一些性能优化。`jdom-1.1.zip`是...
- DOM:通过DocumentBuilderFactory创建Document对象,然后使用createElement、setAttribute等方法构建XML结构,最后用Transformer将Document转换成字符串或写入文件。 - SAX:SAX主要用于解析,但也可以用于生成XML...
在实际项目中,生成XML文件通常涉及到构建Document对象,添加Element、Attribute等节点,然后使用Transformer将Document对象转换成XML字符串或直接写入文件。解析XML时,你可以通过解析器读取文件,然后遍历Element...
- **保存XML**:最后,使用`Document`对象的`asXML()`方法将XML结构转换成字符串,再写入文件。 例如,`CreateXml.java`可能包含以下代码片段: ```java DocumentFactory factory = DocumentFactory.getInstance()...
- 修改完成后,使用`Transformer`将`Document`对象转换回XML字符串或写入文件。 5. **处理命名空间**: - JDOM支持XML命名空间,`Namespace`类用于定义命名空间,可以附加到元素上。 - 解析带有命名空间的XML时...
4. **写入文件**:最后使用 `Transformer` 将构建好的 `Document` 对象转换为 XML 字符串并保存到文件中。 #### JDOM 和 DOM4J 解析 XML **JDOM** 是一种轻量级的 API,它为 Java 开发者提供了简单直观的方式来...
生成XML文档时,DOM4J允许我们通过创建`Element`、`Attribute`等对象,构建一个内存中的XML结构,然后将其转换为XML字符串或写入文件。 1. 创建`Document`对象:`Document document = DocumentFactory.getInstance...
3. **XML输出**:使用`org.jdom.output.Format`和`XMLOutputter`类将`Document`对象转换为XML字符串或写入文件。 ```java XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()); outputter.output...
通过`XMLOutputter`类,可以将修改后的`Document`对象转换回XML字符串或写入文件。 **JDOM与其他解析器比较** 与其他解析器如DOM、SAX、StAX相比,JDOM有其独特的优势: - **易用性**:JDOM的API设计更贴近Java...
JDOM在各种Java项目中都有广泛的应用,特别是在XML数据的解析、生成和处理上。例如: - **配置文件处理**:许多Java应用程序使用XML作为配置文件,JDOM可以帮助读取、修改这些配置。 - **Web服务**:在SOAP或...
- **解析**: 使用`SAXBuilder`或`DOMBuilder`从XML字符串或文件创建`Document`对象。然后,可以遍历文档结构,访问列表和映射。 - **序列化**: 有了`Document`对象,可以使用`XMLOutputter`将其转换回XML字符串或...
JDOM提供了`XMLOutputter`类来将`Document`对象转换为XML字符串或写入文件。以下是一个写入XML文件的示例: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import...
本文将深入探讨如何使用Java生成和解析XML格式的文件和字符串,主要关注DOM方法,同时也会提及其他解析方式。 1、基础知识: Java解析XML主要有四种方法: - DOM(Document Object Model):W3C提供的接口,将整个...
4. 使用DocumentBuilder将Document对象转换为XML字符串。 例如: ```java Element root = new Element("root"); root.setAttribute("attr", "value"); Element child = new Element("child"); root.addContent...
2. **XML 文档读取**:JDOM 可以解析 XML 文件,并将其转换为内存中的文档对象,开发者可以通过遍历这些对象来访问和修改文档内容。 3. **XML 文档修改**:通过对 JDOM 对象的操作,可以直接修改 XML 文档的内容,...
4. **序列化**:JDOM可以将构建好的XML Document对象转换回字符串,或者写入到文件或输出流中。 **JDOM的优势** 1. **性能**:JDOM完全用Java编写,无需依赖其他外部库,这使得它在Java平台上运行高效。 2. **...