Ich versuche, GetElementById auf ein XML-Dokument mit PHP zu verwenden.PHP getElementById gibt null zurück
PHP-Code ist:
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->validateOnParse = TRUE;
$dom->loadXML(file_get_contents(<DocumentPath>));
var_dump($dom->getElementById('rect1'));
Beispiel XML:
<?xml version="1.0" encoding="utf-8"?>
<rectangles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="XML-DOM-RectSchema.xsd">
<rectangle id="rect1">
<innerText>Rectangle 1</innerText>
<bgcolor>black</bgcolor>
<fontcolor>white</fontcolor>
<height>50</height>
<width>100</width>
<timespan>2002-05-30T09:30:10Z</timespan>
</rectangle>
XSD:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="rectangles">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rectangle" maxOccurs="unbounded">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element name="innerText" type="xsd:string" />
<xsd:element name="bgcolor" type="xsd:string" />
<xsd:element name="fontcolor" type="xsd:string" />
<xsd:element name="height" type="xsd:positiveInteger" />
<xsd:element name="width" type="xsd:positiveInteger" />
<xsd:element name="timespan" type="xsd:dateTime" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Ich kann nicht verstehen, warum var_dump "NULL" ausgibt, während wenn ich var_dump ($ dom) versuche, druckt das richtige Zeug, so dass das Dokument korrekt geladen ist. Offensichtlich XML und Schema sind wohlgeformt.
Funktioniert es, wenn Sie die Xsd-Schema-Deklaration entfernen? – Halcyon
Keine Änderungen, immer NULL – Polletto
Es ist nicht das erste Mal, wenn getElementById nicht funktioniert. Ich benutze $ xpath = new domXpath ($ dom); var_dump ($ xpath-> query ('// * [@ id = "rect1"]')); – splash58