Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Sax解析器JAVA中创建层次结构_Java_Sax - Fatal编程技术网

在Sax解析器JAVA中创建层次结构

在Sax解析器JAVA中创建层次结构,java,sax,Java,Sax,我已经完成了一个sax解析器,它解析xml文件并在控制台上打印标记 问题是他们没有遵循等级制度 看看这个: -------------------<GOT> -------------------<character> -------------------<id> -------------------<name> ----------------------->Arya Stark -------------------<gende

我已经完成了一个sax解析器,它解析xml文件并在控制台上打印标记

问题是他们没有遵循等级制度

看看这个:

-------------------<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();
        }
 
    }
 
}