在Sax解析器JAVA中创建层次结构
我已经完成了一个sax解析器,它解析xml文件并在控制台上打印标记 问题是他们没有遵循等级制度 看看这个:在Sax解析器JAVA中创建层次结构,java,sax,Java,Sax,我已经完成了一个sax解析器,它解析xml文件并在控制台上打印标记 问题是他们没有遵循等级制度 看看这个: -------------------<GOT> -------------------<character> -------------------<id> -------------------<name> ----------------------->Arya Stark -------------------<gende
-------------------<GOT>
-------------------<character>
-------------------<id>
-------------------<name>
----------------------->Arya Stark
-------------------<gender>
----------------------->Female
-------------------<culture>
----------------------->Northmen
-------------------<born>
----------------------->In 289 AC, at Winterfell
-------------------<died>
-------------------<alive>
----------------------->TRUE
-------------------<titles>
-------------------<title>
----------------------->Princess
这个类执行解析器并调用newSaxParser类。SAX只是一个事件流,因此您应该以某种方式维护处理程序状态以实现所需的逻辑。这里有一堆布尔标志 在你的问题中,我不清楚你的目标到底是什么。 若您只想在输出中缩进标记,那个么可以为缩进设置一个整数变量,这样您就可以在元素开始时增加它,在元素结束时减少它
试着找到一些教程并遵循它,例如,在这里如果你不向我们展示你的代码,你希望我们如何处理这个问题?你是对的,对不起,看起来你既没有编写过语法分析器,也没有使用语法分析器。更新了代码,忘记添加实际的语法分析器,我的错
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, start, length));
} else {
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("</" + qName + ">");
}
}
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();
}
}
}