[R] read XML

Paulo Cardoso pecardoso at netcabo.pt
Wed Jul 30 15:47:21 CEST 2008


Ok,

I reach this with
setwd("E:/MBayRNP/output")
xml.mfd<-xmlTreeParse("myfile.xml")
str(xml.mfd$doc$children$layout)

and get this:

<layout>
 <name>Layout 2</name>
 <pagesByX>1</pagesByX>
 <pagesByY>1</pagesByY>
 <elements>
  <legend refParent="r3" xmax="0.54156171284634758"
xmin="0.020151133501259435" ymax="0.31480598161051165"
ymin="0.042461931948864044"/>
  <component background="auto" border="none" borderDegMinSec="false"
borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
borderMargin="12" borderNoOverlaps="true" borderRounding="0" borderStep="1"
borderUnit="Meter" controlPoints="auto" graticule="auto" grid="auto"
legend="auto" name="MapMnaziBayhab" northArrow="auto" paging="continuous"
ref="r1" scaleBar="auto" scope="locked center / scale"
scopeDetail="646802.61034615175,8856311.5759953968,150"
xmax="0.35877862595419846" xmin="0.027989821882951665"
ymax="0.98902384414662947" ymin="0.32371064328183174"/>
  <component background="auto" border="none" borderDegMinSec="false"
borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
borderMargin="12" borderNoOverlaps="true" borderRounding="0" borderStep="1"
borderUnit="Meter" controlPoints="auto" graticule="auto" grid="auto"
legend="hide" name="MapMnaziBayall" northArrow="auto" paging="continuous"
ref="r3" scaleBar="auto" scope="locked center / scale"
scopeDetail="646802.61034615175,8856311.5759953968,150"
xmax="0.707379134860051" xmin="0.37659033078880411"
ymax="0.98902384414662947" ymin="0.32371064328183174"/>
  <component background="auto" border="none" borderDegMinSec="false"
borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
borderMargin="12" borderNoOverlaps="true" borderRounding="0" borderStep="1"
borderUnit="Degree" controlPoints="auto" graticule="auto" grid="auto"
legend="auto" name="Map Africa Mnazi" northArrow="auto" paging="continuous"
ref="r6" scaleBar="auto" scope="entire component" xmax="0.93198992443324935"
xmin="0.73047858942065491" ymax="0.98902384414662947"
ymin="0.84662172667648694"/>
 </elements>
</layout>

I don't know how to go further and extract elements listed with
str(xml.mfd$doc$children$layout)

List of 4
 $ name    :List of 1
  ..$ text: list()
  .. ..- attr(*, "class")= chr [1:2] "XMLTextNode" "XMLNode"
  ..- attr(*, "class")= chr "XMLNode"
 $ pagesByX:List of 1
  ..$ text: list()
  .. ..- attr(*, "class")= chr [1:2] "XMLTextNode" "XMLNode"
  ..- attr(*, "class")= chr "XMLNode"
 $ pagesByY:List of 1
  ..$ text: list()
  .. ..- attr(*, "class")= chr [1:2] "XMLTextNode" "XMLNode"
  ..- attr(*, "class")= chr "XMLNode"
 $ elements:List of 4
  ..$ legend   : list()
  .. ..- attr(*, "class")= chr "XMLNode"
  ..$ component: list()
  .. ..- attr(*, "class")= chr "XMLNode"
  ..$ component: list()
  .. ..- attr(*, "class")= chr "XMLNode"
  ..$ component: list()
  .. ..- attr(*, "class")= chr "XMLNode"
  ..- attr(*, "class")= chr "XMLNode"
 - attr(*, "class")= chr "XMLNode"

And I need the first two components of elements:List of 4.
>From those components I need to manipulate xmax and xmin and write a new xml
with these parameters changed only.

>
> -----Original Message-----
> From: Martin Morgan [mailto:mtmorgan at fhcrc.org]
> Sent: quarta-feira, 30 de Julho de 2008 13:49
> To: Paulo Cardoso
> Cc: r
> Subject: Re: [R] read XML
> 
> "Paulo Cardoso" <pecardoso at netcabo.pt> writes:
> 
> > I have a xml exported by Manifold GIS but I'm not being able to
> import it
> > into R using XLM package.
> 
> I can
> 
> > library(XML)
> > xml <- xmlTreeParse("tmp.xml", useInternal=TRUE)
> > xpathApply(xml, "//component/@ymin", xmlValue)
> [[1]]
> [1] "0.32371064328183174"
> 
> [[2]]
> [1] "0.32371064328183174"
> 
> [[3]]
> [1] "0.84662172667648694"
> 
> so I wonder what specifically your difficulty is?
> 
> Best,
> 
> Martin
> 
> >
> >
> >
> > The file have this structure:
> >
> >
> >
> >   <?xml version="1.0" encoding="UTF-8" ?>
> >
> > - <layout>
> >
> >   <name>Layout 2</name>
> >
> >   <pagesByX>1</pagesByX>
> >
> >   <pagesByY>1</pagesByY>
> >
> > - <elements>
> >
> >   <legend refParent="r3" xmax="0.54156171284634758"
> > xmin="0.020151133501259435" ymax="0.31480598161051165"
> > ymin="0.042461931948864044" />
> >
> >   <component background="auto" border="none" borderDegMinSec="false"
> > borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
> > borderMargin="12" borderNoOverlaps="true" borderRounding="0"
> borderStep="1"
> > borderUnit="Meter" controlPoints="auto" graticule="auto" grid="auto"
> > legend="auto" name="MapMnaziBayhab" northArrow="auto"
> paging="continuous"
> > ref="r1" scaleBar="auto" scope="locked center / scale"
> > scopeDetail="646802.61034615175,8856311.5759953968,150"
> > xmax="0.35877862595419846" xmin="0.027989821882951665"
> > ymax="0.98902384414662947" ymin="0.32371064328183174" />
> >
> >   <component background="auto" border="none" borderDegMinSec="false"
> > borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
> > borderMargin="12" borderNoOverlaps="true" borderRounding="0"
> borderStep="1"
> > borderUnit="Meter" controlPoints="auto" graticule="auto" grid="auto"
> > legend="hide" name="MapMnaziBayall" northArrow="auto"
> paging="continuous"
> > ref="r3" scaleBar="auto" scope="locked center / scale"
> > scopeDetail="646802.61034615175,8856311.5759953968,150"
> > xmax="0.707379134860051" xmin="0.37659033078880411"
> > ymax="0.98902384414662947" ymin="0.32371064328183174" />
> >
> >   <component background="auto" border="none" borderDegMinSec="false"
> > borderEachPage="true" borderFont="Tahoma, 8" borderFore="#000000"
> > borderMargin="12" borderNoOverlaps="true" borderRounding="0"
> borderStep="1"
> > borderUnit="Degree" controlPoints="auto" graticule="auto" grid="auto"
> > legend="auto" name="Map Africa Mnazi" northArrow="auto"
> paging="continuous"
> > ref="r6" scaleBar="auto" scope="entire component"
> xmax="0.93198992443324935"
> > xmin="0.73047858942065491" ymax="0.98902384414662947"
> > ymin="0.84662172667648694" />
> >
> >   </elements>
> >
> >   </layout>
> >
> >
> >
> > Any idea?
> >
> >
> >
> > Thanks.
> >
> >
> >
> > Paulo Cardoso
> >
> >
> > 	[[alternative HTML version deleted]]
> >
> > ______________________________________________
> > 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.
> 
> --
> Martin Morgan
> Computational Biology / Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N.
> PO Box 19024 Seattle, WA 98109
> 
> Location: Arnold Building M2 B169
> Phone: (206) 667-2793
> No virus found in this incoming message.
> Checked by AVG.
> Version: 8.0.100 / Virus Database: 270.5.6/1579 - Release Date: 29-07-
> 2008 6:43



More information about the R-help mailing list