[R] XML - get node by name

Ajay ohri ohri2007 at gmail.com
Sun Sep 7 17:38:18 CEST 2008


well not sure how its done in R , but heres a way to do it in simple Excel.
http://decisionstats.com/2008/parsing-xml-files-easily/

Parsing XML files easily

To parse a XML (or KML or PMML) file easily without using any
complicated softwares, here is a piece of code that fits right in your
excel sheet.

Just import this file using Excel, and then use the function
getElement, after pasting the XML code in 1 cell.

xml-getelement

It is used  for simply reading the xml/kml code as a text string. Just
pasted all the xml code in one cell, and used the start ,end function
(for example start=<constraints> and end=</constraints> to get the
value of constraints in the xml code).

Simply read into the value in another cell using the getElement function.

heres the code if you ever need it.Just paste it into the VB editor of
Excel to create the GetElement function (if not there already) or
simply import the file in the link above.

Attribute VB_Name = "Module1″
Public Function getElement(xml As String, start As String, finish As String)
  For i = 1 To Len(xml)
    If Mid(xml, i, Len(start)) = start Then
      For j = i + Len(start) To Len(xml)
        If Mid(xml, j, Len(finish)) = finish Then
          getElement = Mid(xml, i + Len(start), j - i - Len(start))
          Exit Function
        End If
      Next j
    End If
  Next i
End Function

On Sun, Sep 7, 2008 at 1:52 PM, Antje <niederlein-rstat at yahoo.de> wrote:
>
> Hi there,
>
> I try to rewrite some Java-code with R. It deals with reading XML files. I started with the XML package. In Java, I had a very useful method which gave me a node by using:
>
> name of the node
> index of appearance
> start point: global (false) / local (true)
>
> So, I could do something like this.
>
> setCurrentChildNode("data", 0);
> getValueOfElement("val",1,true);
> --> gives 45
>
> setCurrentChildNode("data", 1);
> getValueOfElement("val",1,true);
> --> gives 11
>
> getValueOfElement("val",1,false);
> --> gives 45
>
> <root>
>  <data loc="1">
>    <val i="t1"> 22 </val>
>    <val i="t2"> 45 </val>
>  </data>
>  <data loc="2">
>    <val i="t1"> 44 </val>
>    <val i="t2"> 11 </val>
>  </data>
> </root>
>
> Now, I'd like to do something like this in R. Most important would be to retrieve a node just by its name, not by the whole path. How is it possible?
>
> Can anybody help me with this issue?
>
> Antje
>
> ______________________________________________
> 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.



--
Regards,

Ajay Ohri
http://tinyurl.com/liajayohri


More information about the R-help mailing list