如何利用JDOM把XML文档全部解析出来

阅读更多

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

        其中XML文档为:company.xml

       


<联系人列表 公司="大禹">
	<联系人>
	    
		<姓名>大牛
		<公司>大禹集团
		<电话>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("
                    

你可能感兴趣的:(xml,jdom,instanceof,递归)