[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