3 回答

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
最直接的解決方案是使用簡單XML實現(xiàn)自定義get innerXML:
function simplexml_innerXML($node)
{
$content="";
foreach($node->children() as $child)
$content .= $child->asXml();
return $content;
}
在您的代碼中,替換$body_content = $el->asXml();為$body_content = simplexml_innerXML($el);
但是,您也可以切換到另一個API,該API區(qū)分innerXML(您正在尋找的內(nèi)容)和externalXML(您現(xiàn)在獲得的內(nèi)容)。Microsoft Dom libary提供了這種區(qū)別,但是不幸的是PHP DOM卻沒有。
我發(fā)現(xiàn)PHP XMLReader API提供了這種區(qū)別。請參見readInnerXML()。盡管此API在處理XML方面有完全不同的方法。嘗試一下。
最后,我要強(qiáng)調(diào)的是XML并不是要提取數(shù)據(jù)作為子樹,而是提取數(shù)據(jù)。這就是為什么您在尋找正確的API時遇到麻煩的原因。將HTML子樹存儲為一個值(并轉(zhuǎn)義所有標(biāo)簽)而不是XML子樹會更“標(biāo)準(zhǔn)”。還要注意,某些HTML合成器并不總是XML兼容的(即
vs
)。無論如何,在實踐中,您的方法對于編輯xml文件絕對更方便。
- 3 回答
- 0 關(guān)注
- 405 瀏覽
添加回答
舉報