2014-09-19 53 views
1

我目前正在嘗試製作一個java文件,該文件可以使用xml進行導出。我需要實際檢索的唯一的事情是工作人員用ID的並沒有什麼else.If我的XML文件看起來像這樣:使用SaxParser獲取ID

<? xml version= "1.0" ?> 
< company> 
    < staff id = "22" > 
      < firstname> kate </firstname > 
      < lastname> kim </lastname > 
      < nickname> lolo </nickname > 
      < salary> 10560</ salary > 
    </ staff> 
    < staff> 
      < firstname> Chelsea </firstname > 
      < lastname> young</ lastname > 
      < nickname> cheloung </nickname > 
      < salary> 200700</ salary > 
    </ staff> 
    < staff id = "23" > 
    < firstname> Dani </firstname > 
      < lastname> Heil </lastname > 
      < nickname> Heily </nickname > 
      < salary> 300000</ salary > 
    </ staff> 
</ company> 

和我的Java代碼如下所示:

package xmlfunctions; 

import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 
import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

public class saxParser { 

public static void main(String argv[]) { 

try { 

SAXParserFactory factory = SAXParserFactory.newInstance(); 
SAXParser saxParser = factory.newSAXParser(); 

DefaultHandler handler = new DefaultHandler() { 

boolean bfname = false; 


public void startElement(String uri, String localName,String qName, 
      Attributes attributes) throws SAXException { 

     System.out.println("Start Element :" + qName); 

     if (qName.equalsIgnoreCase("FIRSTNAME")) { 
      bfname = true; 
     } 



} 

public void endElement(String uri, String localName, 
     String qName) throws SAXException { 

     System.out.println("End Element :" + qName); 

} 

public void characters(char ch[], int start, int length) throws SAXException { 

     if (bfname) { 
      System.out.println("First Name : " + new String(ch, start, length)); 
      bfname = false; 
     } 



} 

}; 

    saxParser.parse("KatesFile.xml", handler); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

    } 

} 

我怎樣才能改變它讓它只顯示員工ID?這就是我真正想要的其他標籤。任何人都可以幫忙嗎?我很不確定如何自己取得身份證。

回答

1

使用參數attributes,您可以在startElement()中獲得id的值。

public void startElement(String uri, String localName,String qName,Attributes attributes) throws SAXException { 
    if (qName.equals("staff")) { 
     System.out.println(attributes.getValue("id")); 
    } 
} 

如果在<staff>沒有id,該值爲null。

+0

謝謝你絕對的傳奇!一天的幫手! – user3373261 2014-09-19 13:55:05

+0

完美地工作! – user3373261 2014-09-19 14:26:05

+0

如果我想獲得id和它的名字而不是數字,它的工作原理是什麼?只是它現在不能工作我已經嘗試使用它的ID有名稱而不是數字 – user3373261 2014-09-19 14:43:49