Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
Xml 使用SAX获取元素的相应结尾_Xml_Sax - Fatal编程技术网

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

Xml 使用SAX获取元素的相应结尾,xml,sax,Xml,Sax,我有一个xml,它的形式如下 <brick type="Func" gid="29" fname="removeContexts" fns="dflt"> <viewData x="470" y="45"/> <arg> <brick

我有一个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解析器调用了相应的结束元素

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


如果使用DOM,你知道如何使用或做什么吗

您可能希望使用堆栈

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

然后,当您得到一个结束标记时,堆栈的顶部将始终包含相应的开始标记放在那里的内容,除了弹出它以使对齐继续正确外,您还可以对它执行适当的操作