簡體   English   中英

如何使用 PHP 5.0 中的 DOM 提取 XML 中的子元素?

[英]How do extract child element in XML using DOM in PHP 5.0?

我有這樣的 XML

  <?xml version="1.0" encoding="utf-8"?>
  <root>
      <mynode catid="10" catname="Animals" label="Animals" catdesc="" parent_id="2">
         <mynode catid="11" catname="Lions" label="Lions" catdesc="" parent_id="10">
           <mynode catid="12" catname="lion" label="lion" catdesc="" parent_id="11"/>
         <mynode catid="13" catname="lioness" label="lioness" catdesc="" parent_id="11"/>
        </mynode>
       </mynode>
    </root>

從這里我想刪除

<?xml version="1.0" encoding="utf-8"?>
<root>

</root>

所以預期的結果是

        <mynode catid="10" catname="Animals" label="Animals" catdesc="" parent_id="2">
         <mynode catid="11" catname="Lions" label="Lions" catdesc="" parent_id="10">
           <mynode catid="12" catname="lion" label="lion" catdesc="" parent_id="11"/>
         <mynode catid="13" catname="lioness" label="lioness" catdesc="" parent_id="11"/>
        </mynode>
       </mynode>

我怎樣才能做到這一點?

編輯 1:致菲爾

        $dom = new DomDocument();
       //$dom->preserveWhitespace = false;
     $dom->load('treewithchild.xml'); 

function DOMinnerHTML($element) 
{ 
$innerHTML = ""; 
$children = $element->childNodes; 

foreach ($children as $child) 
{ 

    $tmp_dom = new DOMDocument(); 
    $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
    $innerHTML.=trim($tmp_dom->saveXML()); 
    echo $tmp_dom->saveXML();
} 
return $innerHTML; 
 } 
  $dom->preserveWhiteSpace = false; 

  $domTable = $dom->getElementsByTagName("mynode"); 

    foreach ($domTable as $tables) 
   { 
//echo $tables;
       DOMinnerHTML($tables); 
  } 

當您想要<root>節點的內部標記時,即您要迭代的子節點元素。 您可以使用DOMDocument::documentElement屬性訪問此元素。

試試這個(測試和工作)

$doc = new DOMDocument;
$doc->load('treewithchild.xml');
$inner = '';
foreach ($doc->documentElement->childNodes as $child) {
    $inner .= $doc->saveXML($child);
}
echo $inner;

我希望根元素也被返回,您必須知道對於每個 xml 文件,都會隱式添加一個,即使它存在於您的文件中。 所以嘗試這樣做
$children = $element->childNodes->childNodes;
我認為這會對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM