您的位置:首页 > 编程语言 > Java开发

Java利用JDom解析和传递XML格式数据

2013-01-18 09:22 435 查看
Java利用JDom解析和传递XML格式数据
Java利用JDom来解析处理XML数据格式:需要的包jdom-1.1.2.jar1 将数据转换成XML格式的数据进行传递
Element rootList, firstList, secondItem, thirdItem;
//根元素标签名
rootList = new Element("root");
//根元素标签内的属性名与值
rootList.setAttribute("project", pname);
//生成Doc文档
Document Doc = new Document(rootList);
//获取文档中的根标签
rootList = Doc.getRootElement();
for (int i = 0; i < judges.size(); i++)
{
//生成新的元素
firstList = new Element("flayout");
firstList.setAttribute("percent", "percent");
//加入根级元素中
rootList.addContent(firstList);
}
XMLOutputter XMLOut = new XMLOutputter();
//将doc文档转换为字符串型的XML格式
String xmlinfo = XMLOut.outputString(Doc);
//将开头的去掉
xmlinfo = xmlinfo.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
"");
//返回已经封装好的XML数据
return xmlinfo;


2 将字符串中的XML解析出进行处理
//创建一个新的字符串
StringReader read = new StringReader(stadXML);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
String projectName;
List<Judgestandard> standIndex = new ArrayList<Judgestandard>();
try {
// 通过输入源构造一个Document
Document doc = sb.build(source);
// 取的根元素
Element root = doc.getRootElement();
projectName = root.getAttributeValue("project");
// 得到根元素所有子元素的集合
Element et = null;
List nodes = root.getChildren();
// 第一级指标
for (int i = 0; i < nodes.size(); i++) {
et = (Element) nodes.get(i);// 循环依次得到子元素
Judgestandard judge = new Judgestandard();
//获取该元素中属性的值
String fid = et.getAttributeValue("mainid");
//获取元素的孩子数目
List fsize = et.getChildren();
// 第二级指标
for (int j = 0; j < fsize.size(); j++)
{
et = (Element) fsize.get(j);// 循环依次得到子元素
et.getAttributeValue("stdid")
}
Java处理XML文档
原始XML:
<?xml version="1.0" encoding="UTF-8"?>
<HD>
<disk name="C">
<capacity>8G</capacity>
<files>1580</files>
</disk>
<disk name="D">
<capacity>10G</capacity>
<files>3000</files>
</disk>
</HD>
Java处理代码:
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/**
* <?xml version="1.0" encoding="UTF-8"?>
*<HD>
*   <disk name="C">
*     <capacity>8G</capacity>
*       <files>1580</files>
*   </disk>
*   <disk name="D">
*       <capacity>10G</capacity>
*       <files>3000</files>
*    </disk>
*</HD>
* @author Administrator
*
*/
//利用JDom来解析XML文件
public class JDomParseXMLFile {
public static void main(String[] args) throws Exception{

SAXBuilder sb=new SAXBuilder();
//下面两种构建document的方式,将xml和该解析类都放在默认包下
Document doc=sb.build(JDomParseXMLFile.class.getClassLoader().getResourceAsStream("test.xml"));
//Document doc=sb.build("src/test.xml");//构造文档对象
Document doc=sb.build("src/test.xml");//构造文档对象
Element root=doc.getRootElement();//获取根元素,即文档中的<HD>
List list=root.getChildren("disk");//取名字为disk的所有元素
for(int i=0;i<list.size();i++)
{
Element element=(Element)list.get(i);//依此遍历所有的disk节点
String name=element.getAttributeValue("name");
String capacity=element.getChildText("capacity");//取disk子元素capacity的内容
String files=element.getChildText("files");
System.out.println("name:"+name);
System.out.println("capacity"+capacity);
System.out.println("files"+files);
}
}
}


本文出自 “在云端的追梦” 博客,请务必保留此出处http://computerdragon.blog.51cto.com/6235984/1121518
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: