SAX 解析器:如何在不明确给出根名称的情况下获取 java 中 XML 的根元素?

SAX Parser: How to fetch root element of XML in java without explicitly giving root name?

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

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

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

一个XML文档中只能有一个根元素,它必然是遇到的第一个元素,所以只需保存元素名称(localNameQName – 都提供了)第一次调用 startElement() 回调。

试试这个方法,

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。