Tôi có XML sau:SimpleXML Reading nút với một tên hyphenated
<?xml version="1.0" encoding="UTF-8"?>
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd">
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.1">
<office:meta>
<dc:creator>Mark Baker</dc:creator>
<dc:date>2010-09-01T22:49:33Z</dc:date>
<meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date>
<meta:editing-cycles>4</meta:editing-cycles>
<meta:editing-duration>PT00H04M20S</meta:editing-duration>
<meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator>
</office:meta>
</office:document-meta>
</gnm:Workbook>
Và đang cố gắng để đọc văn phòng: Tài liệu-meta nút để extractthe yếu tố khác nhau dưới nó (dc: creator, meta: creation- ngày, vv)
Các mã sau đây:
$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
var_dump($officeXML);
echo '<hr />';
mang lại cho tôi:
object(SimpleXMLElement)[91]
public 'document-meta' =>
object(SimpleXMLElement)[93]
public '@attributes' =>
array
'version' => string '1.1' (length=3)
public 'meta' =>
object(SimpleXMLElement)[94]
nhưng nếu tôi cố gắng đọc các yếu tố tài liệu-meta sử dụng:
$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
$docMeta = $officeXML->document-meta;
var_dump($docMeta);
echo '<hr />';
tôi nhận được
Notice: Use of undefined constant meta - assumed 'meta' in /usr/local/apache/htdocsNewDev/PHPExcel/Classes/PHPExcel/Reader/Gnumeric.php on line 273
int 0
tôi cho rằng SimpleXML đang cố gắng để trích xuất một nút "tài liệu" không tồn tại từ $ officeXML, sau đó trừ giá trị của hằng số (không tồn tại) "meta", dẫn đến buộc kết quả số nguyên 0 chứ không phải là nút meta tài liệu.
Có cách nào để giải quyết vấn đề này bằng SimpleXML hay tôi sẽ bị buộc viết lại bằng XMLReader? Bất kỳ trợ giúp nào được đánh giá cao.
bản sao có thể có của [PHP: Làm cách nào để truy cập thuộc tính đối tượng này?] (Http://stackoverflow.com/questions/758449/php-how-do-i-access-this-object-property) –