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文档中只能有一个根元素,它必然是遇到的第一个元素,所以只需保存元素名称(localName
或QName
– 都提供了)第一次调用 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。
我正在使用 SAX 解析器将 XML 转换为 CSV 格式。在这里,我需要获取任何给定 XML 文件的根元素。我知道我可以使用以下代码片段完成任务。
if (!"book".equalsIgnoreCase(qName)) {
.......
}
但我想从任何给定的 XML 文件中自动获取根元素名称,而不是将其显式定义为 "book"。因为我的目的是从任何输入 XML 文件生成 CSV,但只使用 SAX 解析器。谁能帮我解决我的问题?提前致谢!
一个XML文档中只能有一个根元素,它必然是遇到的第一个元素,所以只需保存元素名称(localName
或QName
– 都提供了)第一次调用 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。