XML节点和子节点值到数组PHP

时间:2016-08-16 04:57:37

标签: php arrays xml child-nodes

我正在尝试将节点值保存到数组中。这是XML结构:

  <wildcards>
    <conference id="1">
      <seeds>
        <seed divId="1">10,7,17</seed>
        <seed divId="2">8,5,3</seed>
      </seeds>
      <wild>2,4</wild>
      <elimination>11,6,14,1,13,12,20,15</elimination>
    </conference>
 </wildcards>

The xml file can be found here
我想将会议1的节点值与数组键相关联,它们是通配符标记中的位置。这是我的代码:

$xmlDoc = new DOMDocument(); 
$xmlDoc->load('http://www.tsn.ca/datafiles/XML/NHL/standings.xml'); 

$searchNode = $xmlDoc->getElementsByTagName('wildcards');
foreach ($searchNode as $node) {
    $conference1 = $node->getElementsByTagName('conference');
    $conference1 = $conference1->item(0)->nodeValue;
}           

echo $conference1;
//  $conference1 = str_replace(" ",",",$conference1);
$conference1Array =  explode(',', $conference1);
$conference1ArrayLength = count($conference1Array) ;

for ($i = 1; $i < $conference1ArrayLength; $i++) {
    echo $i.": ".$conference1Array[$i-1];
    echo "<br/>";
}  

If you go to this website,你可以看到我当前的输出。我试图用字符串替换空格并在&#39;,&#39;上爆炸。获得正确的数组,但它不起作用。

conference1的输出为:10,7,17 8,5,3 2,4 11,6,14,1,13,12,20,15。即使有空格,替换也不起作用。

我需要在17,3和4之后使用逗号。我们的想法是将团队ID的密钥插入名为seed的数据库中的列中。然后,我可以使用PHP来确定与表输出的每个分区/通配符关联的数字。以下是密钥与团队ID /节点值关联的含义:

团队ID:10 - &gt; 1(第1分区)
团队ID:7 - &gt; 2(第1分区第2)
团队ID:17 - &gt; 3(第1区第3)
团队ID:8 - &gt; 4(第2分区第1)
团队ID:5 - &gt; 5(第2分区第2)
团队ID:3 - &gt; 6(第3分区第3)
团队ID:2 - &gt; 7(通配符1)
团队ID:4 - &gt; 8(通配符2)
团队ID:所有其余的(已淘汰)

我尝试使用code from this link分别获取节点值,但我无法弄清楚如何让它与我的情况一起工作。顺便说一句,我还没有尝试过我的代码。

编辑:我查看了所提供的链接,并提出了以下建议:

$searchNode = $xmlDoc->getElementsByTagName('wildcards');
$divData = array();
foreach($searchNode as $node){
    foreach($node->childNodes as $child) {
        foreach($child->childNodes as $secondChild) {
            foreach($secondChild->childNodes as $thirdChild) {
                $divData[] = array($thirdChild->nodeName => $thirdChild->nodeValue);
            }
        }
    }
}

This is my new output

0 个答案:

没有答案