0

我有一个如下形式的 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>

如您所见,我们有多个具有相同名称的标签到任何深度。在开始元素中,我检查了一些东西。我如何知道已使用 SAX 解析器调用了相应的结束元素?

例如,当我得到一个计数器时,我想在得到对应的计数器而不是另一个计数器时结束计数器。

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

4

1 回答 1

0

可能您想使用堆栈。

当您检测到开始标签时,将适当的东西压入堆栈,当您检测到结束标签时,弹出堆栈。

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

于 2013-10-08T11:52:12.587 回答