2014-09-19 4 views
1

В настоящее время я пытаюсь создать java-файл, который может выполнять экспорт с помощью xml. Единственное, что мне нужно на самом деле получить это сотрудники идентификаторы и ничего 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(); 
} 

    } 

} 

Как я могу изменить чтобы он отображал только идентификатор персонала? Это все, чего я действительно не хочу, чтобы другие теги. Может ли кто-нибудь помочь? Я очень не уверен, как получить идентификатор самостоятельно.

ответ

1

Вы можете получить значение id в startElement(), используя параметр attributes.

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, значение равно нулю.

+0

Спасибо вам, абсолютная легенда! Помощник дня! – user3373261

+0

Работает отлично! – user3373261

+0

Если я хочу получить идентификатор и его имя, а не число, оно будет работать одинаково? Просто это не сработает. Я пробовал использовать его на id, у которого есть имя вместо числа – user3373261

Смежные вопросы