PHP - 对XML文件的XPATH请求 - 子对象和兄弟
问题描述:
我有以下XML文档,我需要为每个节点获得他的孩子(< KA>/< kod>和< TPV>/< TPV>/... < A>)。为了更好地理解,这里就是我需要:PHP - 对XML文件的XPATH请求 - 子对象和兄弟
<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的孩子> <热塑性硫化弹性体> < TSA> < TS>),然后获取其顶部兄弟姐妹(意思是他的父母< TPV>兄弟姐妹是< KA>)得到< KA>/< kod>
我希望你能够支持我的问题,我不能更多地描述我的英语。
感谢您的回复
这里是我的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 />";
}
Thx非常卡普里。我会在下班后检查它 – porosman 2015-02-11 14:58:50
目前,您的答案不仅仅是一系列链接。如果Stackoverflow上的其他问题已经对这个问题有了答案,请不要在这里回答,因为那么问题应该以重复的方式关闭。如果没有重复的帖子,请扩展此答案以包含解决问题的所有必要信息。 – 2015-02-11 15:13:02