java - 使用 SaxParser 获取 ID

标签 java xml saxparser

我目前正在尝试制作一个可以使用 xml 导出的 java 文件。我唯一需要实际检索的是员工 ID,没有其他内容。如果我的 xml 文件如下所示:

<? 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?这就是我真正想要的,而不是其他标签。有人可以帮忙吗?我非常不确定如何自己获取 id。

最佳答案

可以获取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"));
    }
}

如果没有id<staff> ,值为空。

关于java - 使用 SaxParser 获取 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25935447/

相关文章:

java - 为 JAX-WS 客户端设置 SSL

在 Firefox 和 IE 中使用 XSLT 将 XML 转换为 XML

xml - 在 XML 成为标准并考虑到它的所有缺点之前,是什么让 XML 如此流行?

java - SAX 解析器出现问题

Java/Tomcat 调试 (SSL) - 使用哪个日志文件?

java - 2 列文件名的 JTable。当更多文件添加到文件列表时自动更新?

javascript - 正则表达式和xml

java - XML当String时无法解析,当从File解析时没有问题

java - 使用本地 DTD 验证 XML,引发错误

java - CompletableFuture 无需阻塞即可获取结果