XML是一种基于XML规范语法的标签类型文档,它是重量级的,本文主要介绍XML在java语言里面的生成与解析,XML生成包为Dom4j,有关XML与其他数据格式之间的比较将会在接下来的文章中给出。
一、生成xml
使用java代码生成以下xml文档
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<User name="stryang" sex="男" age="24">
<son>
</son>
</User>
</Root>
java代码
//java
/** 建立document对象 */
Document document = DocumentHelper.createDocument();
/** 建立config根节点 */
Element configElement = document.addElement("Root");
/** 用户属性 */
Element userElement = configElement.addElement("User");
userElement.addAttribute("name", "stryang");
userElement.addAttribute("sex", "男");
userElement.addAttribute("age", "24");
userElement.addElement("son");
将xml文档转为字符串
try {
// 使用输出流来进行转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用GB2312编码
OutputFormat format = new OutputFormat(" ", true, "utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
String s = out.toString("utf-8");
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
二、解析xml
1.从http输出流里面获取xml
public static Document getDocument(String url){
Document doc = null;
HttpURLConnection conn = null;
InputStream ins = null;
SAXReader reader = null;
try{
HttpTimeoutHandler hth = new HttpTimeoutHandler(600000);
URL conURL = new URL(null,url,hth);
conn = (HttpURLConnection)conURL.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
ins = conn.getInputStream();
reader =new SAXReader();
doc= reader.read(ins);
ins.close();
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ins != null) {
ins.close();
ins = null;
}
} catch (IOException e1) {
e1.printStackTrace();
}
try {
if (conn != null) {
conn.disconnect();
conn = null;
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return doc;
}
2.从Document对象获取数据,主要涉及到dom4j相关api
- Element.node(index) - 获得在元素特定索引XML节点。
- Element.attributes() - 获取一个元素的所有属性。
- Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
- Document.getRootElement() - 得到的XML的根元素。