function showDoc($title, $morestuff = '') { global $testdoc; echo '<h4>', $title, '</h4>', '<pre>', htmlspecialchars($morestuff ? $morestuff : $testdoc->xmd_xml()), '</pre>'; } $sometag1 = $testdoc->xmd_add_element('sometag'); $testdoc->xmd_set_attribute(0, 'owner', 'rene'); $testdoc->xmd_add_text('text in my first child element', $sometag1); showDoc('Small XML document'); $sometag2 = $testdoc->xmd_add_element('sometag', 0, array('x' => 'somevalue')); $testdoc->xmd_add_text('bizarre <text> in "my& 2nd child', $sometag2); $testdoc->xmd_add_text(' + more text in first one', $sometag1); $testdoc->xmd_set_attribute($sometag2, 'owner', '<c&a">'); $testdoc->xmd_add_element('innertag', $sometag2); showDoc('Slightly changed'); showDoc('All text', $testdoc->xmd_text()); $stuff = ''; foreach ($testdoc->xmd_get_element($sometag2) as $key => $value) { $stuff .= $key . ': ' . $value . "\n"; } showDoc('Children, attributes, name and parent of 2nd sometag', $stuff); $testdoc->xmd_remove_nodes('text in my first child element', $sometag1); // note: remove text may remove more than one node... $testdoc->xmd_set_attribute(0, 'owner', 'haentjens'); // new value showDoc('Text removed from 1st sometag, docroot owner changed'); $testdoc->xmd_remove_element($sometag2); $sometag2 = $testdoc->xmd_add_text_element('��', 'alors!'); showDoc('2nd sometag replaced by new subelement with French name'); $testdoc->name[$sometag2] = 'sometag'; // properties are read/write
function _find_keywords($d) { $dd = new xmddoc($d); if ($dd->error) { return NULL; } $regs = array(); // for use with ereg() foreach ($dd->attributes[0] as $name => $value) { if ($name == 'kw' && ereg('^<?([^>]+)>?$', $value, $regs)) { $kwa = array_map('trim', explode(',', $regs[1])); if (ereg('^<' . ($tag = $dd->name[0]) . '[^>]*>(.*)</' . $tag . '>$', $d, $regs)) { $htdc = array_flip(get_html_translation_table(HTML_ENTITIES)); $d = strtr(ereg_replace('<((/?(b|big|i|small|sub|sup|u))|br/)>', '[\\1]', $regs[1]), $htdc); // then & -> & etc. $d = strtr(str_replace("\r\n", " ", $d), "\r\n", " "); } else { $d = $dd->xmd_text(); } array_push($kwa, $d); return $kwa; } } return NULL; }