使用SAX获取元素的相应结尾

时间:2013-09-26 14:32:16

标签: xml sax

我有一个xml,其形式如下

                        <brick type="Func" gid="29" fname="removeContexts" fns="dflt">
                            <viewData x="470" y="45"/>
                            <arg>
                                <brick type="Func" gid="4" fname="useOneAsMany" fns="dflt" object_uid="r1">
                                    <viewData x="335" y="91"/>
                                    <arg>
                                        <brick type="Src" gid="0" path="/OrderCreate/Header/To/PartnerInformation/PartnerIdentifier">
                                            <viewData x="219" y="29"/>
                                        </brick>
                                    </arg>
                                    <arg pin="1">
                                        <brick type="Func" gid="3" fname="concat" fns="dflt">
                                            <viewData x="190" y="80"/>
                                            <arg>
                                                <brick type="Func" gid="13" fname="const" fns="dflt" object_uid="r0">
                                                    <viewData x="50" y="83"/>
                                                    <bindings>
                                                        <param name="value">
                                                            <value>ALL</value>
                                                        </param>
                                                    </bindings>
                                                </brick>
                                            </arg>
                                            <arg pin="1">
                                                <brick object_uid="r0"/>
                                            </arg>
                                            <bindings>
                                                <param name="delimeter">
                                                    <value/>
                                                </param>
                                            </bindings>
                                        </brick>
                                    </arg>
                                    <arg pin="2">
                                        <brick type="Func" gid="23" fname="const" fns="dflt">
                                            <viewData x="190" y="137"/>
                                            <bindings>
                                                <param name="value">
                                                    <value>-other-</value>
                                                </param>
                                            </bindings>
                                        </brick>
                                    </arg>
                                </brick>
                            </arg>
                        </brick>

如您所见,我们有多个标签同名到任何深度。在start元素中,我检查了一些东西。我怎么知道使用SAX Parser调用了相应的end元素?

例如,当我得到时,我开始一个计数器,当我得到它的相应而不是另一个时,我想结束计数器。

如果有DOM也不知道如何使用或做什么?

1 个答案:

答案 0 :(得分:0)

可能你想使用堆栈。

当您检测到开始标记时,将适当的内容推送到堆栈上,当您检测到结束标记时,弹出堆栈。

然后当你得到一个结束标记时,堆栈顶部将始终包含相应的开始标记所放置的内容,除了弹出它以使对齐继续正确之外,你还可以用它做一些合适的事情。 。