2014-09-19 52 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