成长

小军军

博客园 首页 联系 订阅 管理

XML

====================================================================

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

=================================================================================

操作XML的方法

一:基于光标的方法:

/**
    * 基于光标的方式一行一行的读取xml 空格也是一个文本
    */
 @Test
   public void test01(){
  /*创建xmlinputFactory工厂*/
    XMLInputFactory factory=XMLInputFactory.newInstance();
    /*创建一个inputstream流*/
    InputStream stream=null;
    /*读取xml文件*/
    stream=XmlReaderJava.class.getClassLoader().getResourceAsStream("books.xml");
    try {
  XMLStreamReader reader= factory.createXMLStreamReader(stream);
  while(reader.hasNext()){
   /**
             见http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/javax/xml/stream/XMLStreamConstants.html
       static int ATTRIBUTE    指示事件是一个属性
     static int CDATA     指示事件是一个 CDATA 节
    static int CHARACTERS      指示事件是一些字符
    static int COMMENT       指示事件是一个注释
    static int DTD    指示事件是一个 DTD
    static int END_DOCUMENT     指示事件是一个结束文档
    static int END_ELEMENT     指示事件是一个结束元素
    static int ENTITY_DECLARATION  指示一个 Entity Declaration
    static int ENTITY_REFERENCE    指示事件是一个实体引用
    static int NAMESPACE     指示事件是一个名称空间声明
    static int NOTATION_DECLARATION   指示一个 Notation
    static int PROCESSING_INSTRUCTION           指示事件是一条处理指令
    static int SPACE   字符是空格(参阅 [XML], 2.10 "White Space Handling")。
    static int START_DOCUMENT      指示事件是一个开始文档
    static int START_ELEMENT     指示事件是一个开始元素
    */
   int type=reader.next();
   if(type==XMLStreamConstants.START_ELEMENT){
      System.out.println(reader.getName().toString());//得到所有元素名字
   }else if(type==XMLStreamConstants.CHARACTERS){//得到文本内容
      System.out.println(reader.getText());
   }else if(type==XMLStreamConstants.END_ELEMENT){//得到结束元素
    System.out.println(reader.getName());
   }
  }
 } catch (XMLStreamException e) {
  e.printStackTrace();
 }
   }

---------------------------------------------------------------------------------------------------------------

/**
  * 访问price中的值
  */
 @Test
 public void test02(){
 XMLInputFactory factory=XMLInputFactory.newInstance();
 InputStream stream=null;
 stream=XmlReaderJava.class.getClassLoader().getResourceAsStream("books.xml");
 try {
  XMLStreamReader reader= factory.createXMLStreamReader(stream);
  while(reader.hasNext()){
   int type=reader.next();
   if(type==XMLStreamConstants.START_ELEMENT){
    String name=reader.getName().toString();
    if(name.equals("title")){
     System.out.println(reader.getName()+":"+reader.getElementText());
    }else if(name.equals("price")){
     System.out.println(reader.getName()+":"+reader.getElementText());
    }
   }
  }
 } catch (XMLStreamException e) {
  
  e.printStackTrace();
 }
 }

=========================================================================

二:迭代的方式:

 

 

posted on 2013-06-18 00:12  houqijun  阅读(117)  评论(0)    收藏  举报