Skip to content

Instantly share code, notes, and snippets.

@cspray
Created May 2, 2012 15:18
Show Gist options
  • Save cspray/2577396 to your computer and use it in GitHub Desktop.
Save cspray/2577396 to your computer and use it in GitHub Desktop.
Why we don't like XML

I was recently working with the FogBugz XML API and I needed to get some attribute value from the response. Below is the perfectly legal call chain needed to get an attribute value from my preferred XML parser, DOMDocument:

$case_id = $dom_document->getElementsByTagName('case')->item(0)->attributes->getNamedItem('ixBug')->nodeValue;

Assuming FogCreek chose to go with a JSON API for FogBugz we could expect something along these lines to get the same value:

$case_id = $json->case->ixBug

For this reason I would prefer to work with a JSON API as compared to an XML API. Imagine the code you'd need to actually parse a complete XML document and not simply returning an attribute value.

@edorian
Copy link

edorian commented May 2, 2012

php -r '$x = new DomDocument(); $x->loadXml("<foo><bar baz=\"7\"/></foo>"); $z = $x->getElementsByTagName("bar"); var_dump($z->item(0));'
class DOMElement#3 (0) {
}

It returns "at least" a DOMNode but in the cases where the entries are DomElements it returns the real thing.

@cspray
Copy link
Author

cspray commented May 2, 2012

Indeed. Just verified this myself. I wonder how it decides whether to return a DOMNode or DOMElement?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment