在 PHP 中使用 SimpleXMLElement 時,有沒有辦法獲取具有命名空間的元素的命名空間或全名?
例如,使用元素
<namespace:name>...</namespace:name>
SimpleXMLElement::getName() 只回傳name,而 getNamespaces() 回傳檔案中所有命名空間的陣列。我希望能夠獲得元素使用的特定命名空間,在這種情況下namespace,或全名,namespace:name。
uj5u.com熱心網友回復:
現在似乎沒有辦法直接在 SimpleXML 中執行此操作。然而,幸運的是,您SimpleXMLElement可以DOMNode使用dom_import_simplexml. 這不會重新處理 XML,它只是在相同的內部資料結構周圍放置一個不同的 PHP 物件。
然后,您可以從DOMNode物件的屬性中訪問所需的資訊:
$domNode = dom_import_simplexml($simpleXmlElement);
$nsPrefix = $domNode->prefix;
$nsUri = $domNode->namespaceURI;
請記住,前綴(namespace:在您的示例中)完全是當前 XML 檔案的本地,甚至是 XML 檔案的當前部分,因此不應被解釋為具有永久含義。
元素的“真實”命名空間是命名空間 URI,它是本地前綴系結到的永久識別符號。因此,如果您想要元素的明確表示,您可以使用格式{http://example.com}SomeElement,即'{' . $domNode->namespaceURI . '}' . $domNode->localName
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493597.html
上一篇:有沒有辦法使用XSL生成查找表?
