Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: XML::LibXML's findnodes is beahving weirdly

by Cody Pendant (Prior)
on May 16, 2008 at 08:33 UTC ( [id://686873]=note: print w/replies, xml ) Need Help??


in reply to XML::LibXML's findnodes is beahving weirdly

You have a default, unnamed namespace. This is a big annoyance in XML/XSL and may be causing your problem. All nodes without a namespace are in the Atom namespace, but its name is blank.

I know how to get around it using XSL, but not with the module.

In XSL, you need to make up your own namespace and call it as an attribute of the stylesheet, like xmlns:whatever="http://www.w3.org/2005/Atom". As long as it matches the URL in the input, all your content is in the "whatever" namespace if another namespace isn't specified.

But like I say, that may not be the problem.



Nobody says perl looks like line-noise any more
kids today don't know what line-noise IS ...

Replies are listed 'Best First'.
Re^2: XML::LibXML's findnodes is beahving weirdly
by un-chomp (Scribe) on May 16, 2008 at 11:39 UTC
    You can use XML::LibXML::XPathContext to register the namespace as follows:
    use strict; use warnings; use XML::LibXML; use XML::LibXML::XPathContext; # load the XML doc my $p = XML::LibXML->new; my $xml_file = do { local $/; <DATA> }; my $dom = $p->parse_string( $xml_file ); # register the namespace my $xc = XML::LibXML::XPathContext->new( $dom ); $xc->registerNs('ns', 'http://www.w3.org/2005/Atom'); # select using XPath my @nodes = $xc->findnodes( '/ns:feed/ns:entry'); print $_->toString for @nodes; __DATA__ <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:os="http://a9.com/-/sp +ec/opensearch/1.1/"> <os:totalResults>233</os:totalResults> <os:startIndex>1</os:startIndex> <os:itemsPerPage>233</os:itemsPerPage> <os:Query role="request" searchTerms="test" startPage=""/> <entry> <id>34</id> <channel>1</channel> <title>Decision making: Marmite</title> + <description>A meeting of the 'business group', which is the committ +ee set up to steer the development of the new Squeezy Marmite bottle. + They discuss the qualities of the new bottle and agree to test i t with consumers.</description> <author></author> <size>36145156</size> <date>2007-09-07</date> <uri>assets/asset10000/aaiiaaaaaaafnknn.mpg</uri> <keylearningstage></keylearningstage> <keywords></keywords> <source>C4L Secondary Service</source> </entry> </feed>

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2024-04-24 23:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found