Java 杂谈Java

使用JDOM方式解析XML

2018-08-21  本文已影响15人  java面试笔试

一、需要导入JDOM包http://www.jdom.org/ 

二、XML文件

三、开始解析

public class JDOMTest {

  public static void main(String[] args) {

// 进行对books.xml文件的JDOM解析

  // 准备工作

 // 1.创建一个SAXBuilder的对象

SAXBuilder builder = new SAXBuilder();

try {

 // 2.创建一个输入流,将xml文件加载到输入流中

InputStream in = new FileInputStream("books.xml");

// 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中     Document document = builder.build(in);

// 4.通过document对象获取xml文件的根节点

           Element rootElement = document.getRootElement();

// 5.获取根节点下的子节点的List集合

           List bookList = rootElement.getChildren(); 

    for (Element book : bookList) {

System.out.println("==========开始解析第"                        + (bookList.indexOf(book) + 1) + "本书==========");

                 List attrBook = book.getAttributes(); 

 // 解析book的属性集合

for (Attribute attr : attrBook) {

              String attrName = attr.getName();

              String attrValue = attr.getValue();

System.out.println("属性:"+attrName+"---值:"+attrValue);

                }

              List bookChildren = book.getChildren();

  // 对book节点的子节点的节点名以及节点值的遍历

for (Element element : bookChildren) {

System.out.print("节点:"+element.getName()+"---值:");                    System.out.println(element.getValue());

                }

System.out.println("==========结束解析第"

+ (bookList.indexOf(book) + 1) + "本书==========");

            }

        }  catch (FileNotFoundException e) {

 // TODO Auto-generated catch block

           e.printStackTrace();

        } catch (JDOMException e) {

// TODO Auto-generated catch block

           e.printStackTrace();

        } catch (IOException e) {

 // TODO Auto-generated catch block

           e.printStackTrace();

        }

    }

 }

解析结果:

XML包放置问题

直接在你的工程下面建一个xml目录,访问时就直接用xml/XXX.xml就行了

JAVA解析XML实例

Java解析XML的四种方法—DOM/SAX/jdom/dom4j

配制文件(要放在src的根目录下) test.xml

Xml代码  

8G

200

1580

10G

500

3000

类 Sample1 

Java代码  

packagecom.phl;

importjava.util.List;

importorg.jdom.Document;

importorg.jdom.Element;

importorg.jdom.input.SAXBuilder;

publicclassSample1 {

publicstaticvoidmain(String[] args)throwsException {

SAXBuilder sb =newSAXBuilder();// 创建一个SAXBuilder对象

Document doc = sb.build(Sample1.class.getClassLoader().getResourceAsStream("test.xml"));

// 构造文档对象

Element root = doc.getRootElement();// 获取根元素

List list = root.getChildren("disk");// 取名字为disk的所有元素

for(inti =0; i < list.size(); i++) {

            Element element = (Element) list.get(i);  

String name = element.getAttributeValue("name");// 获取元素中属性为name的值

String capacity = element.getChildText("capacity");// 取disk子元素capacity的内容

String directories = element.getChildText("directories");

String files = element.getChildText("files");

System.out.println("磁盘信息:");

System.out.println("分区盘符:"+ name);

System.out.println("分区容量:"+ capacity);

System.out.println("目录数:"+ directories);

System.out.println("文件数:"+ files);

System.out.println("-----------------------------------");

        }  

    }  

}  

公众号:javafirst

上一篇 下一篇

猜你喜欢

热点阅读