Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between the different XML parsing libraries in PHP5?

The original question is below, but I changed the title because I think it will be easier to find others with the same doubt. In the end, a XHTML document is a XML document.

It's a beginner question, but I would like to know which do you think is the best library for parsing XHTML documents in PHP5?

I have generated the XHTML from HTML files (which where created using Word :S) with Tidy, and know I need to replace some elements from them (like the and element, replace some attributes in

tags).

I haven't used XML very much, there seems to be many options for parsing in PHP (Simple XML, DOM, etc.) and I don't know if all of them can do what I need, an which is the easiest one to use.

Sorry for my English, I'm form Argentina. Thanks!

I bit more information: I have a lot of HTML pages, done in Word 97. I used Tidy for cleaning and turning them in XHTML Strict, so now they are all XML compatible. I want to use an XML parser to find some elements and replace them (the logic by which I do this doesn't matter). For example, I want all of the pages to use the same CSS stylesheet and class attributes, for unified appearance. They are all static pages which contains legal documents, nothing strange there. Which of the extensions should I use? Is SimpleXML enough? Should I learn DOM in spite of being more difficult?

like image 600
Nachocual Avatar asked Oct 29 '08 13:10

Nachocual


2 Answers

You could use SimpleXML, which is included in a default PHP install. This extensions offers easy object-oriented access to XML-structures.

There's also DOM XML. A "downside" to this extension is that it is a bit harder to use and that it is not included by default.

like image 122
Aron Rotteveel Avatar answered Oct 05 '22 17:10

Aron Rotteveel


Just to clear up the confusion here. PHP has a number of XML libraries, because php4 didn't have very good options in that direction. From PHP5, you have the choice between SimpleXml, DOM and the sax-based expat parser. The latter also existed in php4. php4 also had a DOM extension, which is not the same as php5's.

DOM and SimpleXml are alternatives to the same problem domain; They læoad the document into memory and let you access it as a tree-structure. DOM is a rather bulky api, but it's also very consistent and it's implemented in many languages, meaning that you can re-use your knowledge across languages (In Javascript for example). SimpleXml may be easier initially.

The SAX parser is a different beast. It treats an xml document as a stream of tags. This is useful if you are dealing with very large documents, since you don't need to hold it all in memory.

For your usage, I would probably use the DOM api.

like image 44
troelskn Avatar answered Oct 05 '22 16:10

troelskn