2010-08-16 25 views
7

Tôi cần chuyển đổi đối tượng SimpleXML thành DOMDocument, để sử dụng nó với DOMXPath. Tôi cần DOMXPath để tôi có thể sử dụng phương thức registerPHPFunctions của mình. Điều này có thể được thực hiện?Chuyển đổi SimpleXML thành DOMDocument, chứ không phải DOMElement

Với dom_import_simplexml Tôi nhận được DOMElement, không phải DOMDocument.

+2

âm thanh như bạn đang không còn làm * đơn giản * hoạt động xml, vì vậy bạn có thể muốn xem xét chuyển sang DOM hoàn toàn. – Gordon

+1

Tôi đang cố gắng thuyết phục bản thân rằng nó đáng để gặp rắc rối. – Znarkus

Trả lời

11

Bạn có thể lấy tài liệu từ $anyDOMNode->ownerDocument

+0

Cảm ơn bạn! Tôi đã tìm kiếm điều này, nhưng không tìm thấy nó. Chính xác những gì tôi đang tìm kiếm! – Znarkus

1
$dom=new DOMDocument; 
$dom->loadXML($sxml->asXML()); 
+0

Cảm ơn! Chỉ cần lưu ý: Phương thức 'loadXML()' trả về một boolean và tải XML thành '$ dom'. Với giải pháp này, tôi sẽ mất kết nối với đối tượng xml đơn giản ban đầu, phải không? Vì vậy, nói rằng tôi loại bỏ các DOMElements sau này, điều này sẽ không ảnh hưởng đến xml đơn giản. – Znarkus

+1

mã đã được sửa. bạn vẫn có quyền truy cập vào $ sxml được trình bày ở đây làm đối tượng simplexml của bạn. $ dom và $ sxml độc lập với nhau. bất kỳ thay đổi nào bạn thực hiện trong $ dom sẽ không ảnh hưởng đến $ sxml. nếu bạn muốn đảo ngược mã ở trên: '$ sxml = simplexml_load_string ($ dom-> saveXML());' – stillstanding

+1

Thực ra, khi tôi đang chuyển đổi bằng 'dom_import_simplexml', nó giữ lại kết nối với xml đơn giản. Nếu tôi xóa nút dom, thay đổi này sẽ gợn sóng trở lại xml đơn giản. – Znarkus

Các vấn đề liên quan