SAX解析器:如何在java中获取XML的根元素而不显式给出根名称?

SAX解析器:如何在java中获取XML的根元素而不显式给出根名称?,java,xml,saxparser,Java,Xml,Saxparser,我正在使用SAX解析器将XML转换为CSV格式。这里,我需要获取任何给定XML文件的根元素。我知道我可以通过使用下面的代码片段来完成这项任务 if (!"book".equalsIgnoreCase(qName)) { ....... } 但是我想从任何给定的XML文件中自动获取根元素名,而不是显式地将其定义为“book”。因为我的目的是从任何输入XML文件生成CSV,但只使用SAX解析器。有人能帮我解决我的问题吗?提前谢谢 XML文档中只能有一个根元素,它必然是遇到的第一个元素,因此在

我正在使用SAX解析器将XML转换为CSV格式。这里,我需要获取任何给定XML文件的根元素。我知道我可以通过使用下面的代码片段来完成这项任务

if (!"book".equalsIgnoreCase(qName)) {
   .......
}

但是我想从任何给定的XML文件中自动获取根元素名,而不是显式地将其定义为“book”。因为我的目的是从任何输入XML文件生成CSV,但只使用SAX解析器。有人能帮我解决我的问题吗?提前谢谢

XML文档中只能有一个根元素,它必然是遇到的第一个元素,因此在第一次调用
startElement()
回调时,只需保存元素名称(
localName
QName
–两者都提供)

这样试试看

public class DataHandler extends DefaultHandler {
   private String firstTag="";
   public void startElement(String uri, String name, String qName, Attributes atts) {
      i++;
      if(i==1) {
                firstTag=qName;
            } 
} // Saving 2nd line of tags (which is the root element) as firstTag

}



然后,您可以在代码中使用相应的firstTag。

还要注意,保存后,您可以通过抛出SAXException中止进一步的解析,如果文件很大,这可以节省大量时间。