3 回答

TA貢獻1155條經(jīng)驗 獲得超0個贊
假設(shè)您有一些這樣的xml。
<xhtml:div>
<xhtml:em>italic</xhtml:em>
<date>2010-02-01 06:00</date>
</xhtml:div>
您可以這樣訪問“ em”: $xml->children('xhtml', true)->div->em;
但是,如果需要日期字段,則此方法將$xml->children('xhtml', true)->div->date; 無法工作,因為您被卡在xhtml命名空間中。
您必須再次執(zhí)行'children'以返回默認名稱空間:
$xml->children('xhtml', true)->div->children()->date;

TA貢獻1839條經(jīng)驗 獲得超15個贊
如果您想快速修復(fù)它,請執(zhí)行以下操作(我感到懶惰時會這樣做):
// Will replace : in tags and attributes names with _ allowing easy access
$xml = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $xml);
這將轉(zhuǎn)換<xhtml:到<xhtml_和</xhtml:到</xhtml_。有點hacky,如果涉及到CDATA NameSpaced XML容器塊或UNICODE標(biāo)記名稱,可能會失敗,但是我想您通常可以安全地使用它(還沒有讓我失?。?/p>

TA貢獻1806條經(jīng)驗 獲得超8個贊
我認為擺脫冒號或用某些人建議的其他方式代替冒號不是一個好主意。您可以輕松訪問具有名稱空間前綴的元素。您可以將標(biāo)識名稱空間的URL傳遞給children()方法的參數(shù),也可以將名稱空間前綴和“ true”傳遞給children()方法。第二種方法需要PHP 5.2及更高版本。
SimpleXMLElement :: children
添加回答
舉報