0

我有以下 XML 文档,我需要从中获取每个节点的子节点(<KA>/<kod> 和 <TPV>/<TPV>/...<A>)。为了更好地理解,这是我需要的:

<KATU/KA/kod> | <KATU/TPV/TPVS/TN> | <KATU/TPV/TPVS/TSA/TS/A>
k11 | VP11 | 11
k21 | VP21 | 21
k31 | VP31 | 31
k32 | VP32 | 32
k33 | VP33 | 33
k41 | VP41 | 41
k41 | VP41 | 42
k41 | VP41 | 43
k51 | VP51 | 51

主要问题(例如来自示例 k41 和他的 41、42、43 的值)是我需要获取的节点不是子节点,而是按顺序的兄弟节点<KA><TPV><KA><TPV>...

所以我需要找到所有的<A>节点(<TPV><TPVS><TSA><TS>的子节点)然后得到它的top兄弟(意思是他的父母<TPV>top兄弟是<KA>)得到<KA >/<科德>

我希望你能理解我的问题,我无法描述更多,因为我的英语。

谢谢您的回复

这是我的 XML:

<?xml version="1.0" encoding="utf-8" ?>  
<PV>
    <PRAV_VZTAHY>
        <TYPPRA>
            <TN>VP</TN> 
        </TYPPRA>
    </PRAV_VZTAHY>
    <OPRAV_SUBJEKT>
        <CHAROS_KOD>1112</CHAROS_KOD> 
        <OPSUB_ADRESA>
            <adresa>
                <nazev_ulice>xxx</nazev_ulice> 
            </adresa>
        </OPSUB_ADRESA>
    </OPRAV_SUBJEKT>
    <OKRESY>
        <OKRES>
            <nuts4>123456</nuts4> 
            <name>asdf</name> 
        </OKRES>
        <OBCE>
            <OBEC>
                <kod>594580</kod> 
                <name>mn</name> 
            </OBEC>
            <KATU>
                <KA>
                    <kod>k11</kod> 
                    <name>q11</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP11</TN> 
                        <TSA>
                            <TS>
                                <A>11</A> 
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
            </KATU>
        </OBCE>
        <OKRES>
            <nuts4>46786</nuts4> 
            <name>qwer</name> 
        </OKRES>
        <OBCE>
            <OBEC>
                <kod>525804</kod> 
                <name>mn</name> 
            </OBEC>
            <KATU>
                <KA>
                    <kod>k21</kod> 
                    <name>q21</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP21</TN> 
                        <TSA>
                            <TS>
                                <A>21</A> 
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
            </KATU>
            <OBEC>
                <kod>540978</kod> 
                <name>mn</name> 
            </OBEC>
            <KATU>
                <KA>
                    <kod>k31</kod> 
                    <name>q31</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP31</TN> 
                        <TSA>
                            <TS>
                                <A>31</A> 
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
                <KA>
                    <kod>k32</kod> 
                    <name>q32</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP32</TN> 
                        <TSA>
                            <TS>
                                <A>32</A>
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
                <KA>
                    <kod>k33</kod> 
                    <name>q33</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP33</TN> 
                        <TSA>
                            <TS>
                                <A>33</A>  
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
            </KATU>
            <OBEC>
                <kod>541265</kod> 
                <name>mn</name> 
            </OBEC>
            <KATU>
                <KA>
                    <kod>k41</kod> 
                    <name>q41</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP41</TN> 
                        <TSA>
                            <TS>
                                <A>41</A> 
                            </TS>
                            <TS>
                                <A>42</A>  
                            </TS>
                            <TS>
                                <A>43</A> 
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
            </KATU>
            <OBEC>
                <kod>553387</kod> 
                <name>mn</name> 
            </OBEC>
            <KATU>
                <KA>
                    <kod>k51</kod> 
                    <name>q51</name> 
                </KA>
                <TPV>
                    <TPVS>
                        <TN>VP51</TN> 
                        <TSA>
                            <TS>
                                <A>51</A> 
                            </TS>
                        </TSA>
                    </TPVS>
                </TPV>
            </KATU>
        </OBCE>
    </OKRESY>
</PV>

这是我的开始:

foreach ($xml->xpath("//KATU") as $ku) {
        print_r($ku);
        print "<hr />";
}
4

1 回答 1

0

您需要读取每个节点并检查该节点是否有子节点。然后遍历它们。是我认为可以回答您的问题的stackoverflow问题的链接。

或者你也可以检查这个这个链接。检查其中人的评论。

我希望你能从这些链接中找到答案。

于 2015-02-11T14:56:35.197 回答