XML 파일에서 PHP 사이트 맵 파서를 구현 중입니다. 나는 비교적 잘하고있다. 그러나 파서가 더 다이내믹해야합니다. 발견 된 모든 child_node에 대해 루핑을 계속하는 재귀 함수를 구현해야합니다. 노드는 다른 child_node 내에 많은 child_node를 포함 할 수 있습니다. 지금까지 내가 한 것은 모든 child_node에 대해 서로 다른 변수 이름을 가진 별도의 foreach 루프를 구현하는 것이었지만 너무 유연하지 않으므로 허용되지 않습니다.PHP로 XML 탐색 사이트 맵 구문 분석
<sitemap>
<node>
<id>rootnode</id>
<link>home.html</link>
</node>
<node>
<id>about</id>
<link>about.html</link>
</node>
<node>
<id>contact</id>
<link>contact.html</link>
<child_node>
<id>contact_uk</id>
<link>contact_uk.html</link>
<child_node>
<id>customer_support_uk</id>
<link>customer_support_uk.html</link>
</child_node>
</child_node>
<child_node>
<id>contact_usa</id>
<link>contact_usa.html</link>
</child_node>
</node>
<node>
<id>products</id>
<link>products.html</link>
</node>
</sitemap>
당신은 노드 접촉이 child_node 내에서 child_node을 가지고 있습니다 할 수 있습니다
이 내 XML 파일입니다. 이것은 재귀 함수가 필요한 곳입니다.
이 내 현재 PHP 코드 :
$source = 'sitemap.xml';
// load as file
$sitemap = simplexml_load_file($source, null, true);
foreach ($sitemap->node as $node) {
if ($node->child_node != "") {
echo "$node->link<br/>";
foreach ($node->child_node as $child) {
if ($child->child_node != "") {
echo " " . $child->link . "<br/>";
foreach ($child->child_node as $innerchild) {
echo " " . $innerchild->link . "<br/>";
}
} else {
echo " " . $child->link . "<br/>";
}
}
} else {
echo "$node->link<br/>";
}
}
이 PHP가 올바른 출력을 가지고 있지만 내가 부모 child_node 내의 모든 child_node 또 다른 별도의 foreach 루프를 만들어야합니다. 누군가가 sitemap에있는 child_node 내의 모든 child_node를 탐색하기 위해 PHP 코드를 변경하는 방법에 대해 올바른 방향으로 나를 가리킬 수 있습니까?
감사합니다.
얼마나 깊은 그 중첩 된 child_nodes 갈 수? 무제한이라면 재귀 함수를 사용하고 싶을 것입니다. 그렇지 않으면, 단지 2 레벨이라면 중첩 된 루프가 가장 쉽습니다. –
아주 깊게 갈 수 있습니다. 위의 예에서, 한 아이는 다른 아이 안에 있습니다. 그러나 실제로는 매우 깊어 질 것입니다 (10 개 이상). 나는 재귀 함수에 능숙하지 않다. 나는 이것이 내가 필요한 것임을 압니다. 도울 수 있니? 덕분에 – seedg