XHTML文書の接頭辞付き名前空間要素を認識するためにPHPのSimpleXMLクラスを取得できないようです。ここに私の例です:SimpleXMLが名前空間要素を見つけられない
test.htmlという
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:zuq="http://localhost/zuq">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<h1>Heading</h1>
<p>Paragraph</p>
<zuq:region name="myRegion">
<div class="myClass">
<h1><zuq:data name="myDataHeading" /></h1>
<p><zuq:data name="myDataParagraph" /></p>
</div>
</zuq:region>
</body>
</html>
私は次の操作を実行した場合:
$sxml = simplexml_load_file('test.html');
print_r($sxml);
それを返します:
SimpleXMLElement Object
(
[head] => SimpleXMLElement Object
(
[meta] => SimpleXMLElement Object
(
[@attributes] => Array
(
[http-equiv] => Content-Type
[content] => text/html; charset=utf-8
)
)
[title] => Untitled Document
)
[body] => SimpleXMLElement Object
(
[h1] => Heading
[p] => Paragraph
)
)
しかし、私は次の操作を行います。
$sxml = simplexml_load_file('test.html');
$sxml_zuq = $sxml->children('zuq', true);
print_r($sxml_zuq);
それは空を返します。
SimpleXMLElement Object
(
)
動作するようには思えないforeach
あるいは持つオブジェクトを反復し、children()
も失敗にURIではなく、接頭辞を使用しました。
私は明らかにどこかで間違いを犯しましたが、私の試みは私が読んでいた多くのチュートリアルの例と全く同じです。
ここでは何が起こっていますか?
のようにxpathを使用します。 'SimpleXMLElement :: getNamespaces()'を使用すると結果が得られますか? –
はい私は** John Giotta **をしています。しかし、ジョシュが指摘したように、子供たちは直接の子孫でしかありません。 – Dan