xmlRoot.RdThese are a collection of methods for providing easy access to the
top-level XMLNode object resulting from parsing an XML
document. They simplify accessing this node in the presence of
auxillary information such as DTDs, file name and version information
that is returned as part of the parsing.
xmlRoot(x, skip = TRUE, ...)
# S3 method for class 'XMLDocumentContent'
xmlRoot(x, skip = TRUE, ...)
# S3 method for class 'XMLInternalDocument'
xmlRoot(x, skip = TRUE, addFinalizer = NA, ...)
# S3 method for class 'HTMLDocument'
xmlRoot(x, skip = TRUE, ...)the object whose root/top-level XML node is to be returned.
a logical value that controls whether DTD nodes and/or
XMLComment objects that appear
before the “real” top-level node of the document should be ignored (TRUE)
or not (FALSE) when returning the root node.
arguments that are passed by the generic to the different specialized methods of this generic.
a logical value or identifier for a C routine that controls whether we register finalizers on the intenal node.
An object of class XMLNode.
One cannot obtain the parent or top-level node of an XMLNode object in S. This is different from languages like C, Java, Perl, etc. and is primarily because S does not provide support for references.
doc <- xmlTreeParse(system.file("exampleData", "mtcars.xml", package="XML"))
xmlRoot(doc)
#> <dataset name="mtcars" numRecords="32" source="R Project">
#> <variables count="11">
#> <variable unit="Miles/gallon">mpg</variable>
#> <variable>cyl</variable>
#> <variable>disp</variable>
#> <variable>hp</variable>
#> <variable>drat</variable>
#> <variable>wt</variable>
#> <variable>qsec</variable>
#> <variable>vs</variable>
#> <variable type="FactorVariable" levels="automatic,manual">am</variable>
#> <variable>gear</variable>
#> <variable>carb</variable>
#> </variables>
#> <record id="Mazda RX4">21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4</record>
#> <record id="Mazda RX4 Wag">21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4</record>
#> <record id="Datsun 710">22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1</record>
#> <record id="Hornet 4 Drive">21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1</record>
#> <record id="Hornet Sportabout">18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2</record>
#> <record id="Valiant">18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1</record>
#> <record id="Duster 360">14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4</record>
#> <record id="Merc 240D">24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2</record>
#> <record id="Merc 230">22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2</record>
#> <record id="Merc 280">19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4</record>
#> <record id="Merc 280C">17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4</record>
#> <record id="Merc 450SE">16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3</record>
#> <record id="Merc 450SL">17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3</record>
#> <record id="Merc 450SLC">15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3</record>
#> <record id="Cadillac Fleetwood">10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4</record>
#> <record id="Lincoln Continental">10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4</record>
#> <record id="Chrysler Imperial">14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4</record>
#> <record id="Fiat 128">32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1</record>
#> <record id="Honda Civic">30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2</record>
#> <record id="Toyota Corolla">33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1</record>
#> <record id="Toyota Corona">21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1</record>
#> <record id="Dodge Challenger">15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2</record>
#> <record id="AMC Javelin">15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2</record>
#> <record id="Camaro Z28">13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4</record>
#> <record id="Pontiac Firebird">19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2</record>
#> <record id="Fiat X1-9">27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1</record>
#> <record id="Porsche 914-2">26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2</record>
#> <record id="Lotus Europa">30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2</record>
#> <record id="Ford Pantera L">15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4</record>
#> <record id="Ferrari Dino">19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6</record>
#> <record id="Maserati Bora">15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8</record>
#> <record id="Volvo 142E">21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2</record>
#> </dataset>
# Note that we cannot use getSibling () on a regular R-level XMLNode object
# since we cannot go back up or across the tree from that node, but
# only down to the children.
# Using an internal node via xmlParse (== xmlInternalTreeParse())
doc <- xmlParse(system.file("exampleData", "mtcars.xml", package="XML"))
n = xmlRoot(doc, skip = FALSE)
# skip over the DTD and the comment
d = getSibling(getSibling(n))