当前位置: 代码迷 >> XML/SOAP >> 怎么利用JDOM把XML文档全部解析出来
  详细解决方案

怎么利用JDOM把XML文档全部解析出来

热度:511   发布时间:2014-01-17 15:01:00.0
如何利用JDOM把XML文档全部解析出来

??????? 在学采用JDOM解析XML文档时,如何把XML文档中的内容全部解析出来,这个问题可把我难住了。不过经过多番查看JDOM API后,终于把它给搞定了。呼呼。。经过这么一弄,算是基本掌握JDOM了。

??????? 其中XML文档为:company.xml

???????

<?xml version="1.0" encoding="UTF-8"?>
<联系人列表 公司="大禹">
	<联系人>
	    <!-- 我是注释,看不见我  -->
		<姓名>大牛</姓名>
		<公司>大禹集团</公司>
		<电话>180888888</电话>
		<地址>
			<街道>皇后街</街道>
			<城市>上海</城市>
			<省份>上海</省份>
		</地址>
	</联系人>

	<联系人>
		<姓名>二牛</姓名>
		<公司>大禹集团</公司>
		<电话>188888888</电话>
		<地址>
			<街道>皇后大道</街道>
			<城市>上海</城市>
			<省份>上海</省份>
		</地址>
	</联系人>
</联系人列表>

??????

?? ?解析它的java代码如下:ParseTest.java

???

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Comment;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Text;
import org.jdom.input.SAXBuilder;

// 练习  解析指定的XML文档,打印到控制台上
public class ParseTest {
	public static void main(String[] args) throws JDOMException, IOException {
		SAXBuilder builder = new SAXBuilder();
		Document doc = builder.build(new File("company.xml"));
		Element root = doc.getRootElement();
		parse(root);
	}

	private static void parse(Element root) {
		String rootName = root.getName();

		System.out.print("<" + rootName);

		// 把当前元素里的属性先打印出来
		List listAtt = root.getAttributes();
		for (int i = 0; i < listAtt.size(); i++) {
			Attribute att = (Attribute) listAtt.get(i);
			String sname = att.getName();
			String svalue = att.getValue();
			System.out.print("  " + sname + "=\"" + svalue + "\"");
		}
		System.out.print(">");

		List listContent = root.getContent();

		for (int i = 0; i < listContent.size(); i++) {
			Object obj = listContent.get(i);
			// 利用instanceof关键字来判断获得的内容的具体类型
			if (obj instanceof Text) {
				Text t = (Text) obj;
				System.out.print(t.getText()); // 递归出口
			} else if (obj instanceof Element) {
				Element e = (Element) obj;
				parse(e); // 如果是Element,则递归
			} else if (obj instanceof Comment) {
				Comment c = (Comment) obj;
				System.out.print("<!--" + c.getText() + ">");
			}
		}
		System.out.print("</" + rootName + ">");
	}
}

?

???? 这里instanceof关键字,可是帮了我大忙,没有它的话,都不知道怎么去判断从getContent()方法中得来的对象。。

  相关解决方案