|
|
@@ -48,13 +48,14 @@ class Zend_Dom_Query
|
|
|
/**#@+
|
|
|
* Document types
|
|
|
*/
|
|
|
+ const DOC_DOM = 'docDom';
|
|
|
const DOC_XML = 'docXml';
|
|
|
const DOC_HTML = 'docHtml';
|
|
|
const DOC_XHTML = 'docXhtml';
|
|
|
/**#@-*/
|
|
|
|
|
|
/**
|
|
|
- * @var string
|
|
|
+ * @var string|DOMDocument
|
|
|
*/
|
|
|
protected $_document;
|
|
|
|
|
|
@@ -85,7 +86,7 @@ class Zend_Dom_Query
|
|
|
/**
|
|
|
* Constructor
|
|
|
*
|
|
|
- * @param null|string $document
|
|
|
+ * @param null|string|DOMDocument $document
|
|
|
* @param null|string $encoding
|
|
|
*/
|
|
|
public function __construct($document = null, $encoding = null)
|
|
|
@@ -119,12 +120,15 @@ class Zend_Dom_Query
|
|
|
/**
|
|
|
* Set document to query
|
|
|
*
|
|
|
- * @param string $document
|
|
|
+ * @param string|DOMDocument $document
|
|
|
* @param null|string $encoding Document encoding
|
|
|
* @return Zend_Dom_Query
|
|
|
*/
|
|
|
public function setDocument($document, $encoding = null)
|
|
|
{
|
|
|
+ if ($document instanceof DOMDocument) {
|
|
|
+ return $this->setDocumentDom($document);
|
|
|
+ }
|
|
|
if (0 === strlen($document)) {
|
|
|
return $this;
|
|
|
}
|
|
|
@@ -143,6 +147,20 @@ class Zend_Dom_Query
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * @param DOMDocument $document
|
|
|
+ * @param string $encoding
|
|
|
+ */
|
|
|
+ public function setDocumentDom(DOMDocument $document)
|
|
|
+ {
|
|
|
+ $this->_document = $document;
|
|
|
+ $this->_docType = self::DOC_DOM;
|
|
|
+ if (null !== $document->encoding) {
|
|
|
+ $this->setEncoding($document->encoding);
|
|
|
+ }
|
|
|
+ return $this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Register HTML document
|
|
|
*
|
|
|
* @param string $document
|
|
|
@@ -196,7 +214,7 @@ class Zend_Dom_Query
|
|
|
/**
|
|
|
* Retrieve current document
|
|
|
*
|
|
|
- * @return string
|
|
|
+ * @return string|DOMDocument
|
|
|
*/
|
|
|
public function getDocument()
|
|
|
{
|
|
|
@@ -259,6 +277,10 @@ class Zend_Dom_Query
|
|
|
}
|
|
|
$type = $this->getDocumentType();
|
|
|
switch ($type) {
|
|
|
+ case self::DOC_DOM:
|
|
|
+ $domDoc = $this->_document;
|
|
|
+ $success = true;
|
|
|
+ break;
|
|
|
case self::DOC_XML:
|
|
|
try {
|
|
|
$domDoc = Zend_Xml_Security::scan($document, $domDoc);
|