jdom解析、生成xml

接上篇,今天说说用JDOM解析、生成XML文件的简单小例子。
1、解析
XML文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
<request type="Pending" flowType="GENERAL" flowName="报销流程"
docId="185647" flowId="16409" nodeName="报销人确认" wikId="58288"
sendId="1210040" userId="1210040" createDate="2009-12-03"
title="费用报销 " flowCreaterId="1210040" nodeType="1"
bosTime="2009-12-03 09:36:15">
<pro type="att"></pro>
<pro type="textarea" name="OP_bxryj" title="处理意见" need="true"></pro>
</request>
</root>

JAVA代码:

public void parseXML(String xmlPath){
/* //创建一个新的字符串
StringReader read = new StringReader(xml);
//创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
//创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();*/

SAXBuilder sb = new SAXBuilder();

try {
//创建文档
Document doc = sb.build(new FileInputStream(xmlPath));
Element root = doc.getRootElement();//获得XML的根元素
System.out.println(root.getName());
System.out.println("------------------------------");
List list = root.getChildren();
for(int i = 0; i < list.size(); i++){
Element req = (Element)list.get(i);
System.out.println(req.getName());
System.out.println(req.getAttributeValue("type"));
System.out.println(req.getAttributeValue("flowName"));
System.out.println();
List att_list = req.getAttributes();
for(int j = 0; j < att_list.size(); j++){
Attribute att = (Attribute)att_list.get(j);
System.out.println(att.getName());
System.out.println(att.getValue());
System.out.println(att.getQualifiedName());
}

System.out.println();
Attribute att = req.getAttribute("nodeName");
System.out.println(att.getName());
System.out.println(att.getValue());
}
System.out.println("--------------------------------------------");
List pro_list = XPath.selectNodes(root, "request/pro");
for(int k = 0; k < pro_list.size(); k++){
Element ele = (Element)pro_list.get(k);
System.out.println(ele.getName());
System.out.println(ele.getText());
System.out.println(ele.getTextTrim());
}
System.out.println("-------------------------------------------");

Element pro = (Element)XPath.selectSingleNode(doc, "root//pro[@type='att']");
System.out.println(pro.getName());
System.out.println(pro.getValue());
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

--------------------------------------------------------------------
2、生成XML文件
代码如下

public void createXML(){
Element root = new Element("root");//创建根元素
Document doc=new Document(root);
Element req = new Element("request");//根元素的子元素
root.addContent(req);//添加到根元素中
req.setAttribute("type", "test");//创建属性元素
req.setAttribute("name","测试");

Element pro = new Element("pro");//创建PRO元素
Attribute att = new Attribute("pro_type","pro_test");//用不到的方法创建属性元素
pro.setAttribute(att);
pro.setText("设置TEXT");
req.addContent(pro);

Element cd = new Element("pro");
cd.setAttribute("cd_type","cd_test");
CDATA cdata = new CDATA("哈哈我找到了");//设置CDATA元素
cd.addContent(cdata);
req.addContent(cd);

//输出结果到编辑器
XMLOutputter out = new XMLOutputter();
out.setFormat(Format.getCompactFormat().setEncoding("GB2312"));
System.out.println(out.outputString(doc));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值