0
我想在使用PHP的XML文檔中使用getElementById。PHP getElementById返回null
PHP代碼是:
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->validateOnParse = TRUE;
$dom->loadXML(file_get_contents(<DocumentPath>));
var_dump($dom->getElementById('rect1'));
例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>
我不明白爲什麼var_dump打印「NULL」,而當我嘗試var_dump($ DOM)它打印正確的東西,所以文檔正確加載。很顯然,XML和Schema格式良好。
如果您刪除了xsd模式聲明,它會起作用嗎? – Halcyon
無變化,始終爲NULL – Polletto
這不是第一次getElementById不起作用。我使用$ xpath = new domXpath($ dom);的var_dump($ xpath->查詢( '// * [@ ID = 「Rect1的」]')); – splash58