| 1 | <?php | 
| 2 |  | 
| 3 | require_once("YakkaObject.php"); | 
| 4 |  | 
| 5 | class YakkaXml extends YakkaObject { | 
| 6 | var $data; | 
| 7 | var $dom; | 
| 8 | var $xpathContext; | 
| 9 | var $namespaces; | 
| 10 |  | 
| 11 | function YakkaXml($source) { | 
| 12 | $this->YakkaObject("YakkaXml"); | 
| 13 |  | 
| 14 | if (is_object($source) && $source->is("YakkaFileReader")) | 
| 15 | $this->data = $source->readAll(); | 
| 16 | else | 
| 17 | $this->data = $source; | 
| 18 |  | 
| 19 | $this->dom = domxml_open_mem($this->data); | 
| 20 | $this->xpathContext = xpath_new_context($this->dom); | 
| 21 | $this->namespaces = array(); | 
| 22 | } | 
| 23 |  | 
| 24 | function declareNamespace($namespacePrefix, $namespaceURI) { | 
| 25 | $this->namespaces[$namespacePrefix] = $namespaceURI; | 
| 26 | xpath_register_ns($this->xpathContext, $namespacePrefix, $namespaceURI); | 
| 27 | } | 
| 28 |  | 
| 29 | function &selectNode($xpathExpression) { | 
| 30 | $xpathResult = xpath_eval($this->xpathContext, $xpathExpression); | 
| 31 | if ($xpathResult && ($node = $xpathResult->nodeset[0])) | 
| 32 | return $node; | 
| 33 |  | 
| 34 | return null; | 
| 35 | } | 
| 36 |  | 
| 37 | function &selectNodeValue($xpathExpression) { | 
| 38 | $xpathResult = xpath_eval($this->xpathContext, $xpathExpression); | 
| 39 | if ($xpathResult && ($node = $xpathResult->nodeset[0])) { | 
| 40 | return $node->get_content(); | 
| 41 | } | 
| 42 | return null; | 
| 43 | } | 
| 44 |  | 
| 45 | function &selectNodes($xpathExpression) { | 
| 46 | $xpathResult = xpath_eval($this->xpathContext, $xpathExpression); | 
| 47 | if ($xpathResult && ($nodes = $xpathResult->nodeset)) | 
| 48 | return $nodes; | 
| 49 |  | 
| 50 | return null; | 
| 51 | } | 
| 52 |  | 
| 53 | function setAttributeOfElement($attributeName, $attributeValue, $xpathExpression) { | 
| 54 | if ($node = $this->selectNode($xpathExpression)) | 
| 55 | $node->set_attribute($attributeName, $attributeValue); | 
| 56 | } | 
| 57 |  | 
| 58 | function toXml() { | 
| 59 | return $this->dom->dump_mem(); | 
| 60 | } | 
| 61 |  | 
| 62 | function toXmlElement() { | 
| 63 | $domElement = $this->dom->document_element(); | 
| 64 | return $domElement->dump_node($domElement); | 
| 65 | } | 
| 66 |  | 
| 67 | function &toDom() { | 
| 68 | return $this->dom; | 
| 69 | } | 
| 70 |  | 
| 71 | function &toDomElement() { | 
| 72 | return $this->dom->document_element(); | 
| 73 | } | 
| 74 |  | 
| 75 | function toHtml() { | 
| 76 | return $this->dom->html_dump_mem(); | 
| 77 | } | 
| 78 | } | 
| 79 |  | 
| 80 | ?> |