有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中使用SAXParser解析嵌套XML

我需要使用SAX解析器解析嵌套的XML

<ParentNode  id="3" name="3" >
    <ChildNode>
        <InnerNode id="13" name="13"   parentID="3" />
    </ChildNode>
    <ChildNode>
        <ParentNode id="2" name="2" >
            <ChildNode>
                <ParentNode id="1" name="1" >
                    <ChildNode>
                        <InnerNode id="11" name="11"   parentID="1" />
                    </ChildNode>
                    <ChildNode>
                        <InnerNode id="10" name="10"   parentID="1" />
                    </ChildNode>
                </ParentNode>
            </ChildNode>
            <ChildNode>
                <InnerNode id="12" name="12"   parentID="2" />
            </ChildNode>
        </ParentNode>
    </ChildNode>
</ParentNode>

ParentNode标记是这里的主标记。ParentNode也可以位于ChildNode标记内。 这里是ParentNode和ChildNode之间的任意关系。 以及hibernate域中ChildNode和InnerNode之间的oneToOne关系

这不是静态XML。它可以更嵌套


共 (2) 个答案

  1. # 1 楼答案

    一个要考虑使用SAX解析器的设计模式是定义对象的堆栈(例如StaseObjtStase=新StAcd())。将相应的对象推到startElement中的堆栈上。在endElement中将对象从堆栈中弹出。当你想知道包含的(父)对象时,可以查看堆栈的顶部。(例如,在startElement中,如果查看堆栈的顶部,发现其中有一个对象,则它是当前元素定义的对象的父对象。)

  2. # 2 楼答案

    这应该会有帮助

    public static void main(String argv[]) {
    
        try {
    
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
    
        DefaultHandler handler = new DefaultHandler() {
    
        boolean bfname = false;
        boolean blname = false;
        boolean bnname = false;
        boolean bsalary = false;
    
        public void startElement(String uri, String localName,String qName, 
                    Attributes attributes) throws SAXException {
    
            System.out.println("Start Element :" + qName);
    
    
    
        }
    
        public void endElement(String uri, String localName,
            String qName) throws SAXException {
    
            System.out.println("End Element :" + qName);
    
        }
    
     saxParser.parse("yourfile.xml", handler);
    
         } catch (Exception e) {
           e.printStackTrace();
         }
    
       }