Try this: library(XML) doc <- xmlTreeParse("adodb.xml", useInternalNodes = TRUE) Lines <- xpathSApply(doc, "//z:row", function(x) do.call(paste, as.list(xmlAttrs(x)))) DF <- read.table(textConnection(Lines), col.names = xpathSApply(doc, "//s:AttributeType", function(x) xmlAttrs(x)[[1]]))
This is what I get: > DF Name Sex Age Height Weight 1 Alfred M 14 69.0 112.5 2 Alice F 13 56.5 84.0 3 Barbara F 13 65.3 98.0 4 Carol F 14 62.8 102.5 5 Henry M 14 63.5 102.5 6 James M 12 57.3 83.0 7 Jane F 12 59.8 84.5 8 Janet F 15 62.5 112.5 9 Jeffrey M 13 62.5 84.0 10 John M 12 59.0 99.5 11 Joyce F 11 51.3 50.5 12 Judy F 14 64.3 90.0 13 Louise F 12 56.3 77.0 14 Mary F 15 66.5 112.0 15 Philip M 16 72.0 150.0 16 Robert M 12 64.8 128.0 17 Ronald M 15 67.0 133.0 18 Thomas M 11 57.5 85.0 19 William M 15 66.5 112.0 On Sun, Jan 10, 2010 at 12:59 PM, Christian Ritter <crit...@ridaco.be> wrote: > Dieter Menne pointed out that the (small) xml attachment didn't make it. > Here is an in-line version (see end of message). Let's hope it works this > time. > > I'm struggling with interpreting XML files created by ADODB as data.frames > and I'm looking for advice. > > Note: > This xlm contains a result set which comes from a rectangular data array. > I've been trying to play with parameters to the xmlToDataFrame function > in the XML package but I dont get it to extract the data frame. Reading the > file with xmlTreeParse seems to work without error. > > This is what the result should look like: > Name Sex Age Height Weight > 1 Alfred M 14 69.0 112.5 > 2 Alice F 13 56.5 84.0 > 3 Barbara F 13 65.3 98.0 > 4 Carol F 14 62.8 102.5 > 5 Henry M 14 63.5 102.5 > 6 James M 12 57.3 83.0 > 7 Jane F 12 59.8 84.5 > 8 Janet F 15 62.5 112.5 > 9 Jeffrey M 13 62.5 84.0 > 10 John M 12 59.0 99.5 > 11 Joyce F 11 51.3 50.5 > 12 Judy F 14 64.3 90.0 > 13 Louise F 12 56.3 77.0 > 14 Mary F 15 66.5 112.0 > 15 Philip M 16 72.0 150.0 > 16 Robert M 12 64.8 128.0 > 17 Ronald M 15 67.0 133.0 > 18 Thomas M 11 57.5 85.0 > 19 William M 15 66.5 112. > > And here is the xml file > <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' > xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' > xmlns:rs='urn:schemas-microsoft-com:rowset' > xmlns:z='#RowsetSchema'> > <s:Schema id='RowsetSchema'> > <s:ElementType name='row' content='eltOnly'> > <s:AttributeType name='Name' rs:number='1'> > <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='8' > rs:maybenull='false'/> > </s:AttributeType> > <s:AttributeType name='Sex' rs:number='2'> > <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='1' > rs:maybenull='false'/> > </s:AttributeType> > <s:AttributeType name='Age' rs:number='3' rs:nullable='true'> > <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' > rs:fixedlength='true'/> > </s:AttributeType> > <s:AttributeType name='Height' rs:number='4' rs:nullable='true'> > <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' > rs:fixedlength='true'/> > </s:AttributeType> > <s:AttributeType name='Weight' rs:number='5' rs:nullable='true'> > <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' > rs:fixedlength='true'/> > </s:AttributeType> > <s:extends type='rs:rowbase'/> > </s:ElementType> > </s:Schema> > <rs:data> > <z:row Name='Alfred' Sex='M' Age='14' Height='69' Weight='112.5'/> > <z:row Name='Alice' Sex='F' Age='13' Height='56.5' Weight='84'/> > <z:row Name='Barbara' Sex='F' Age='13' Height='65.299999999999997' > Weight='98'/> > <z:row Name='Carol' Sex='F' Age='14' Height='62.799999999999997' > Weight='102.5'/> > <z:row Name='Henry' Sex='M' Age='14' Height='63.5' Weight='102.5'/> > <z:row Name='James' Sex='M' Age='12' Height='57.299999999999997' > Weight='83'/> > <z:row Name='Jane' Sex='F' Age='12' Height='59.799999999999997' > Weight='84.5'/> > <z:row Name='Janet' Sex='F' Age='15' Height='62.5' Weight='112.5'/> > <z:row Name='Jeffrey' Sex='M' Age='13' Height='62.5' Weight='84'/> > <z:row Name='John' Sex='M' Age='12' Height='59' Weight='99.5'/> > <z:row Name='Joyce' Sex='F' Age='11' Height='51.299999999999997' > Weight='50.5'/> > <z:row Name='Judy' Sex='F' Age='14' Height='64.299999999999997' > Weight='90'/> > <z:row Name='Louise' Sex='F' Age='12' Height='56.299999999999997' > Weight='77'/> > <z:row Name='Mary' Sex='F' Age='15' Height='66.5' Weight='112'/> > <z:row Name='Philip' Sex='M' Age='16' Height='72' Weight='150'/> > <z:row Name='Robert' Sex='M' Age='12' Height='64.799999999999997' > Weight='128'/> > <z:row Name='Ronald' Sex='M' Age='15' Height='67' Weight='133'/> > <z:row Name='Thomas' Sex='M' Age='11' Height='57.5' Weight='85'/> > <z:row Name='William' Sex='M' Age='15' Height='66.5' Weight='112'/> > </rs:data> > </xml> > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.