如何解决在Sax Parser JAVA中创建层次结构
我已经完成了一个sax解析器,可以解析xml文件并在控制台上打印标签。
问题在于他们没有遵循等级制度。
看看这个:
-------------------<GOT>
-------------------<character>
-------------------<id>
-------------------<name>
----------------------->Arya Stark
-------------------<gender>
----------------------->Female
-------------------<culture>
----------------------->northmen
-------------------<born>
----------------------->In 289 AC,at Winterfell
-------------------<died>
-------------------<alive>
----------------------->TRUE
-------------------<titles>
-------------------<title>
----------------------->Princess
例如,字符和id处于同一级别。关于如何检测标签是否是另一个标签的想法吗?
谢谢!
public class Sax extends DefaultHandler {
public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
System.out.println("-------------------<" + qName + ">");
}
public void characters(char ch[],int start,int length)
throws SAXException {
if( new String(ch,start,length).matches(".*[a-zA-Z0-9]+.*")){
System.out.println("----------------------->" + new String(ch,length));
} else {
}
}
public void endElement(String uri,String qName)
throws SAXException {
System.out.println("</" + qName + ">");
}
}
这是sax解析器的代码,我需要知道一种检测标记是否有子代的方法。
我目前正在阅读有关sax解析器的信息,因此,如果发现我会发布它!
package sax;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class ParseXMLFileSax {
private static final String xmlFilePath = "got.xml";
public static void main(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(xmlFilePath,new Sax());
} catch (Exception e) {
e.printstacktrace();
}
}
}
此类执行解析器并调用newSaxParser类。
解决方法
SAX只是事件流,因此您应该以某种方式维护处理程序状态以实现所需的逻辑。例如。这里有一堆布尔标志
How can I parse nested elements in SAX Parser in java?
不清楚您的目标是什么。 如果只想在输出中缩进标签,则可以使用一个用于缩进的整数变量,因此可以在元素开始处增加它,在元素结束处减少它。
尝试找到一些教程并按照它进行操作,例如这里https://www.informit.com/articles/article.aspx?p=26351&seqNum=5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。