Ich kann nicht scheinen, dass PHPs SimpleXML-Klasse vorgefertigte Namespace-Elemente in einem XHTML-Dokument erkennt. Hier ist mein Beispiel:SimpleXML kann Namespaced-Elemente nicht finden
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>
Wenn ich Folgendes tun:
$sxml = simplexml_load_file('test.html');
print_r($sxml);
Es gibt:
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
)
)
Aber wenn ich folgendes tun:
$sxml = simplexml_load_file('test.html');
$sxml_zuq = $sxml->children('zuq', true);
print_r($sxml_zuq);
Es gibt leer:
SimpleXMLElement Object
(
)
Iterieren durch das Objekt mit foreach
oder sonst scheint nicht zu funktionieren, und die URI anstatt das Präfix in children()
schlägt ebenfalls fehl.
Ich habe offensichtlich irgendwo einen Fehler gemacht, aber ich bin mir nicht sicher, wo, wie mein Versuch ist ziemlich identisch mit vielen Tutorial-Beispielen, die ich in meiner Lesung gestoßen bin.
Was geht hier vor?
angegeben Wenn Sie 'SimpleXMLElement :: getNamespaces()' verwenden erhalten Sie ein Ergebnis? –
Ja ich tue ** John Giotta **; Wie Josh jedoch betonte, Kinder sind nur direkte Nachkommen. – Dan