2010-11-10 104 views
7

有沒有辦法提取SimpleXMLElement的「innerHTML」?獲取SimpleXMLElement的XML內容

例如我怎麼會得到'<div><h1>Hello World</h1></div>'出使用的SimpleXMLElement以下XML代碼:

<xml> 
    <body1> 
    <div><h1>Hello World</h1></div> 
    </body1> 
    <body2> 
    <div><h2>Goodby Moon</h2></div> 
    </body2> 
</xml> 

我閱讀文檔和所有我想出了$xml->body1->asXML();。 這幾乎是正確的解決方案,但它也增加了根標籤:

<body1> 
    <div><h1>Hello World</h1></div> 
</body1> 

是否可以跳過周圍body1標籤?


編輯:

的XML也可能是這樣的:

<xml> 
    <body1> 
    <div><h1>Hello World</h1></div> 
    <div><h1>Hello Moon</h1></div> 
    Some Text 
    </body1> 
    <body2> 
    <div><h2>Goodby Moon</h2></div> 
    </body2> 
</xml> 

如:http://codepad.org/8ZuRYZOW

回答

6

如果你確定它是一個div你正在尋找:

$xml->body1[0]->div->asXML();

其他

$xml->body1[0]->children()->asXML();

http://codepad.org/QUytim28其他http://codepad.org/hDt28BL6

+0

(+1)。感謝您的代碼。但是,只要有多個子元素,它就會失敗。 http://codepad.org/EHepjsZg – jantimon 2010-11-10 14:42:04

+0

這就是你需要在你的問題中提供更多細節的原因;)以下是解決方案http://codepad.org/BCxSzP2m – Shikiryu 2010-11-10 14:59:40

+0

再次感謝!不幸的是它仍然無法正常工作。我想出了同樣的想法,但它跳過純文本。 (看我編輯的問題) – jantimon 2010-11-10 15:08:47

0

你可能想的children method或要使用$xml->body1[ 0 ]->asXML();(數組訪問)

+0

有'$ XML-> body1 [0]之間的任何差別 - > asXML ();'和'$ xml-> body1-> asXML();'? – jantimon 2010-11-10 14:33:21

+1

@Ghommey:如果您的xml中存在多於1個'',唯一的區別就是 – Shikiryu 2010-11-10 14:34:56