[R] getNodeSet - what am I doing wrong?

Johannes Graumann johannes_graumann at web.de
Tue Aug 31 14:12:21 CEST 2010


Sorry about that - got dropped from my attempts yesterday (see the first 
example below, that has the "useInternalNodes=TRUE") ...

Thanks again, Joh


Duncan Temple Lang wrote:

> Johannes Graumann wrote:
>> Thanks!
>> but:
>> > library(XML)
>> > xmlDoc <- xmlTreeParse("http://www.unimod.org/xml/unimod_tables.xml")
> 
> You need to xmlParse() or xmlTreeParse(url, useInternalNodes = TRUE)
> (which are equivalent) in order to be able to use getNodeSet().
> 
> The error you are getting is because you are using xmlTreeParse()
> and the result is a tree represented in R rather than internal
> C-level data structures on which getNodeSet() can operate.
> 
> xmlParse() is faster than xmlTreeParse()
> and one can use XPath to query it.
> 
>   D.
> 
>> > getNodeSet(xmlDoc,"//x:modifications_row", "x")
>> Error in function (classes, fdef, mtable)  :
>>   unable to find an inherited method for function "saveXML", for
>>   signature
>> "XMLDocument"
>> 
>> ?
>> 
>> Thanks, Joh
>> 
>> 
>> Duncan Temple Lang wrote:
>> 
>> > 
>> > Hi Johannes
>> > 
>> >  This is a common issue.  The document has a default XML namespace,
>> >  e.g.
>> > the root node is defined as
>> > 
>> >  <unimod xmlns="http://www.unimod.org/xmlns/schema/unimod_tables_1"...>
>> >    .....
>> > 
>> >  So you need to specify which namespace to match in the XPath
>> >  expression
>> > in getNodeSet().  The XML package  provides a "convenient" facility for
>> > this. You need only specify the prefix such as "x" and that will
>> > be bound to the default namespace. You need to specify this in
>> > two places - where you use it in the XPath expression and
>> > in the namespaces argument of getNodeSet()
>> > 
>> > So
>> >    getNodeSet(test, "//x:modifications_row", "x")
>> > 
>> > gives you probably what you want.
>> > 
>> >  D.
>> > 
>> > 
>> > 
>> > On 8/30/10 8:02 AM, Johannes Graumann wrote:
>> >> library(XML)
>> >>> test <- xmlTreeParse(
>> >>> "http://www.unimod.org/xml/unimod_tables.xml",useInternalNodes=TRUE)
>> >>> getNodeSet(test,"//modifications_row")
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html and provide commented,
>> minimal, self-contained, reproducible code.
>



More information about the R-help mailing list