Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^7: Is there any XML reader like this? (XML::Simple beats LibXML hands down in the speed stakes!)

by tobyink (Abbot)
on Jan 16, 2012 at 10:29 UTC ( #948102=note: print w/ replies, xml ) Need Help??


in reply to Re^6: Is there any XML reader like this? (XML::Simple beats LibXML hands down in the speed stakes!)
in thread Is there any XML reader like this?

I really don't see how the documentation for XML::LibXML could be especially difficult to follow for anyone who is vaguely familiar with Perl OO programming. Just follow the usual rule:

If $obj->isa($class) then consult perldoc $class.

The documentation for the parser says that load_xml "the return value [...] is a XML::LibXML::Document object". So you turn to the XML::LibXML::Document documentation.

The method is called documentElement. It's shown in the SYNOPSIS for XML::LibXML::Document, and documented further down in the METHODS section.

getDocumentElement is just an alias for documentElement so is documented much less prominently, so I can understand how that could have been harder to find, but most clients that you'd view documentation in (e.g. browser, "man", "perldoc") allow you to search for strings quite easily.

But anyway, some of your statements on XML::LibXML reveal what I think is a fundamental difference between what you want to do with XML, and what XML::LibXML is designed for.

You just want to get data out of XML and handle it as some sort of native data structure. XML::LibXML is for people who want to keep their data in as XMLish a form as possible (short of loading it into memory as a single XML formatted string and manipulating it with regexps!) - for people who care (not just at loading and saving time) about the difference between:

<html> <head><title>Foo</title></head> </html>

and:

<html> <head title="Foo" /> </html>

For people who, given a node $x in some deeply nested data structure, sometimes need to do $x->parentNode.

If you don't need to do that sort of stuff, then perhaps there's a mismatch between your needs and XML::LibXML's aims.

I can tell you that XML::Simple would have been quite useless for something like XML::Atom::OWL.


Comment on Re^7: Is there any XML reader like this? (XML::Simple beats LibXML hands down in the speed stakes!)
Select or Download Code
Re^8: Is there any XML reader like this? (XML::Simple beats LibXML hands down in the speed stakes!)
by BrowserUk (Pope) on Jan 16, 2012 at 11:00 UTC
    If you don't need to do that sort of stuff, then perhaps there's a mismatch between your needs and XML::LibXML's aims.

    Finally, we agree on something.

    Most, not all, but most, of my XML needs are for gaining read-only access to relatively small volumes of simple data. Unencoded, with no namespaces or CDATA with no need to look at comments. Mostly configuration data, RDF feeds and similar. Things for which XML::Simple is ideal and XML::LibXML is simply overkill.

    Ie. Exactly the sort if simple XML shown by the OP above. The same data for which you suggested he abandon the simple, easy to use, clearly documented tool he was using in favour of an the over-engineered, horribly documented, behemoth of a chainsaw that is XML::LibXML.

    Just as I don't use a chainsaw to trim my toenails, I use the XML tool that suits my purpose.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?

      I would recommend having a look at XML::Rules. Not only it can match the (assumed) simplicity of XML::Simple thanks to its ability to infer a default set of transformation rules from examples or a DTD, ensuring consistency of the datastructure built even with XMLs containing optionally repeated tags or optional attributes, but it allows you to tweak the datastructure built from your XML to better suit your needs and, should the files get too big, allows you to trim and/or process the datastructure as it's being built.

      Jenda
      Enoch was right!
      Enjoy the last years of Rome.

      "Unencoded"? XML::Simple doesn't handle such broken XML.

      $ perl -MXML::Simple -e'XMLin("<root><foo>\xE9</foo></root>");'
      Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding !
      Bytes: 0xE9 0x3C 0x2F 0x66
      <root><foo>�</foo></root>
                 ^
      

      Just as I don't use a chainsaw to trim my toenails, I use the XML tool that suits my purpose.

      I didn't not try to get you to use XML::LibXML. I was just contradicting obviously incorrect information.

        I was just contradicting obviously incorrect information.

        "contradict". Far from it. You proved it for me.

        NOW, just stop!


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://948102]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (10)
As of 2014-10-23 21:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (129 votes), past polls