Skip to content

Handy wrapper for the PHP DOM, XPath and XSLTProcessor

License

Notifications You must be signed in to change notification settings

pgooood/php-xml-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PHP XML lib

Handy wrapper for the PHP DOM, XPath and XSLTProcessor

Manual is under construction.

Examples

$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('<?xml version="1.0" encoding="utf-8"?><data>content</data>');

//parse HTML
$xml->loadHTML('<html><head><tile>Hello World!</title></head><body><h1>Hello World!</h1></body></html>');

//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 version="1.0" encoding="UTF-8"?>
<catalog>
	<book id="bk101">
		<author>Gambardella, Matthew</author>
		<title>XML Developer's Guide</title>
		<genre>Computer</genre>
		<price>44.95</price>
		<publish_date>2000-10-01</publish_date>
		<description>An in-depth look at creating applications with XML.</description>
	</book>
	<book id="bk102">
		<author>Ralls, Kim</author>
		<title>Midnight Rain</title>
		<genre>Fantasy</genre>
		<price>5.95</price>
		<publish_date>2000-12-16</publish_date>
		<description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description>
	</book>
	<!-- ... -->
</catalog>

About

Handy wrapper for the PHP DOM, XPath and XSLTProcessor

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages