Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pgooood/php-xml-lib

Handy wrapper for the PHP DOM, XPath and XSLTProcessor
https://github.com/pgooood/php-xml-lib

dom php-dom xml xpath xslt

Last synced: 29 days ago
JSON representation

Handy wrapper for the PHP DOM, XPath and XSLTProcessor

Awesome Lists containing this project

README

        

# PHP XML lib
Handy wrapper for the PHP DOM, XPath and XSLTProcessor

Manual is under construction.

Examples
-------
```php
$xml = new \pgood\xml\xml('demo.xml');

//get string value (xpath)
$title = $xml->evaluate('string(/catalog/book[@id="bk103"]/title)');

//get dom element (xpath)
$element = $xml->query('//book[2]')->item(0);

//get subelement value (xpath)
$price = $element->evaluate('number(price)');
//or
$price = $xml->evaluate('number(price)',$element);

//get attribute
$oldId = $element->id;
//or
$oldId = $element->getAttribute('id');

//remove attribute
$element->id = null;
//or
$element->removeAttribute('id');

//set attribute
$element->id = 'newId';
//or
$element->setAttribute('id','newId');

//set text content
$element->text('new text content');

//get text content
$element->text();

//append new element
$newElem = $element->append('new-element');

//move queryed element before
$newElem->before($xml->query('//book[3]')->item(0));

//move queryed element after new one
$newElem->after($xml->query('//book[1]')->item(0));

//get previous element
$newElem->prev();

//get next element
$newElem->next();

//get DOMElement object
$newElem->e();

//get parent
$newElem->parent();

//remove element
$newElem->remove();

//save changes
$xml->save();

//get PHP DOMDocument
$dd = $xml->dd();

//get root element
$documentElement = $xml->de();

/*
* XSLT Transformation
*/
$tpl = new \pgood\xml\template('tpl.xsl');
echo $tpl->transform($xml);

/*
* XML from scratch
*/
$xml = new \pgood\xml\xml();
$xml->de('root-element-name');

//using the xml::create method for element creation
$newElement1 = $xml->de()->append($xml->create(
'child-element-tag-name'
,array(
'attr-name-1' => 'value for first attribute'
,'attr-name-2' => 'value for second attribute'
)
,'element text content'
));

//lazy element creation
$newElement2 = $xml->de()->append('child-element-tag-name');
$newElement2->{'element-id'} = 'id value';

//catch up an existed DOMDocument
$xml2 = new \pgood\xml\xml($newElement2);

//new XML from inline code
$xml = new \pgood\xml\xml('content');

//parse HTML
$xml->loadHTML('Hello World!

Hello World!

');

//save
$xml->save('new-file-name.xml');

/*
* XPath and namespace
* Let's count media:content elements in Yahoo RSS feed
*/
$xml = new \pgood\xml\xml('https://www.yahoo.com/news/rss/');
$xml->registerNameSpace('media','http://search.yahoo.com/mrss/');
$numElemets = $xml->evaluate('count(//media:content)');
```

demo.xml
```xml


Gambardella, Matthew
XML Developer's Guide
Computer
44.95
2000-10-01
An in-depth look at creating applications with XML.


Ralls, Kim
Midnight Rain
Fantasy
5.95
2000-12-16
A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.

```