Usando o pacote xml2

XML na forma de texto

library(tidyverse)
library(xml2)
ls("package:xml2")
##  [1] "as_list"           "as_xml_document"   "download_html"    
##  [4] "download_xml"      "html_structure"    "read_html"        
##  [7] "read_xml"          "url_absolute"      "url_escape"       
## [10] "url_parse"         "url_relative"      "url_unescape"     
## [13] "write_html"        "write_xml"         "xml2_example"     
## [16] "xml_add_child"     "xml_add_parent"    "xml_add_sibling"  
## [19] "xml_attr"          "xml_attr<-"        "xml_attrs"        
## [22] "xml_attrs<-"       "xml_cdata"         "xml_child"        
## [25] "xml_children"      "xml_comment"       "xml_contents"     
## [28] "xml_double"        "xml_dtd"           "xml_find_all"     
## [31] "xml_find_chr"      "xml_find_first"    "xml_find_lgl"     
## [34] "xml_find_num"      "xml_find_one"      "xml_has_attr"     
## [37] "xml_integer"       "xml_length"        "xml_missing"      
## [40] "xml_name"          "xml_name<-"        "xml_new_document" 
## [43] "xml_new_root"      "xml_ns"            "xml_ns_rename"    
## [46] "xml_ns_strip"      "xml_parent"        "xml_parents"      
## [49] "xml_path"          "xml_remove"        "xml_replace"      
## [52] "xml_root"          "xml_serialize"     "xml_set_attr"     
## [55] "xml_set_attrs"     "xml_set_name"      "xml_set_namespace"
## [58] "xml_set_text"      "xml_siblings"      "xml_structure"    
## [61] "xml_text"          "xml_text<-"        "xml_type"         
## [64] "xml_unserialize"   "xml_url"           "xml_validate"
text <- '<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer\'s Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies,
      an evil sorceress, and her own childhood to become queen
      of the world.</description>
   </book>
</catalog>'

# Exame/análise.
doc <- read_xml(text)
doc
## {xml_document}
## <catalog>
## [1] <book id="bk101">\n  <author>Gambardella, Matthew</author>\n  <title ...
## [2] <book id="bk102">\n  <author>Ralls, Kim</author>\n  <title>Midnight  ...
# Estrutura.
str(doc)
## List of 2
##  $ node:<externalptr> 
##  $ doc :<externalptr> 
##  - attr(*, "class")= chr [1:2] "xml_document" "xml_node"
# Classe e métodos disponíveis.
class(doc)
## [1] "xml_document" "xml_node"
methods(class = "xml_document")
##  [1] as.character    as_list         as_xml_document print          
##  [5] write_html      write_xml       xml_add_child   xml_ns         
##  [9] xml_serialize   xml_validate   
## see '?methods' for accessing help and source code
methods(class = "xml_node")
##  [1] as.character    as_list         as_xml_document format         
##  [5] is.na           print           write_html      write_xml      
##  [9] xml_add_child   xml_add_parent  xml_add_sibling xml_attrs<-    
## [13] xml_attrs       xml_attr<-      xml_attr        xml_double     
## [17] xml_find_all    xml_find_chr    xml_find_first  xml_find_lgl   
## [21] xml_find_num    xml_integer     xml_length      xml_name<-     
## [25] xml_name        xml_ns          xml_parent      xml_path       
## [29] xml_remove      xml_replace     xml_serialize   xml_set_attrs  
## [33] xml_set_attr    xml_set_name    xml_text<-      xml_text       
## [37] xml_type        xml_url        
## see '?methods' for accessing help and source code
# Funções extratoras.
xml_name(doc)
## [1] "catalog"
xml_type(doc)
## [1] "element"
xml_length(doc)
## [1] 2
# Ponteiros.
str(doc[[1]])
## <externalptr>
# Atributos do documento.
xml_attrs(doc)
## named character(0)
# Extração de conteúdo com XPath.
xml_find_all(doc, xpath = "//author")
## {xml_nodeset (2)}
## [1] <author>Gambardella, Matthew</author>
## [2] <author>Ralls, Kim</author>
xml_find_all(doc, xpath = "//author/text()")
## {xml_nodeset (2)}
## [1] Gambardella, Matthew
## [2] Ralls, Kim
# Extração dos autores.
xml_find_all(doc, xpath = "//author") %>%
    xml_text()
## [1] "Gambardella, Matthew" "Ralls, Kim"
# Extração dos preços.
xml_find_all(doc, xpath = "//price") %>%
    xml_double()
## [1] 44.95  5.95
# Extração dos atributos dos nós filho.
xml_children(doc) %>%
    xml_attrs()
## [[1]]
##      id 
## "bk101" 
## 
## [[2]]
##      id 
## "bk102"
# As funções acima geram um objecto de classe `xml_nodeset`. Um
# `xml_nodeset` é uma lista de `xml_node`.
ns <- xml_children(doc)
str(ns)
## List of 2
##  $ :List of 2
##   ..$ node:<externalptr> 
##   ..$ doc :<externalptr> 
##   ..- attr(*, "class")= chr "xml_node"
##  $ :List of 2
##   ..$ node:<externalptr> 
##   ..$ doc :<externalptr> 
##   ..- attr(*, "class")= chr "xml_node"
##  - attr(*, "class")= chr "xml_nodeset"
# Classe e métodos.
class(ns)
## [1] "xml_nodeset"
methods(class = "xml_nodeset")
##  [1] as.character    as_list         as_xml_document is.na          
##  [5] print           write_html      write_xml       xml_add_child  
##  [9] xml_add_parent  xml_add_sibling xml_attrs<-     xml_attrs      
## [13] xml_attr<-      xml_attr        xml_double      xml_find_all   
## [17] xml_find_chr    xml_find_first  xml_find_lgl    xml_find_num   
## [21] xml_integer     xml_length      xml_name<-      xml_name       
## [25] [               xml_ns          xml_parent      xml_path       
## [29] xml_remove      xml_replace     xml_serialize   xml_set_attrs  
## [33] xml_set_attr    xml_set_name    xml_text<-      xml_text       
## [37] xml_type        xml_url        
## see '?methods' for accessing help and source code

Importação de arquivo XML

# Importação de um arquivo XML.
url <- "https://www.w3schools.com/Xml/plant_catalog.xml"
doc <- read_xml(url)
head(doc)
## $node
## <pointer: 0x66803d0>
## 
## $doc
## <pointer: 0x66788c0>
# Classe e métodos disponíveis.
class(doc)
## [1] "xml_document" "xml_node"
methods(class = "xml_document")
##  [1] as.character    as_list         as_xml_document print          
##  [5] write_html      write_xml       xml_add_child   xml_ns         
##  [9] xml_serialize   xml_validate   
## see '?methods' for accessing help and source code
methods(class = "xml_node")
##  [1] as.character    as_list         as_xml_document format         
##  [5] is.na           print           write_html      write_xml      
##  [9] xml_add_child   xml_add_parent  xml_add_sibling xml_attrs<-    
## [13] xml_attrs       xml_attr<-      xml_attr        xml_double     
## [17] xml_find_all    xml_find_chr    xml_find_first  xml_find_lgl   
## [21] xml_find_num    xml_integer     xml_length      xml_name<-     
## [25] xml_name        xml_ns          xml_parent      xml_path       
## [29] xml_remove      xml_replace     xml_serialize   xml_set_attrs  
## [33] xml_set_attr    xml_set_name    xml_text<-      xml_text       
## [37] xml_type        xml_url        
## see '?methods' for accessing help and source code
xml_name(doc)
## [1] "CATALOG"
xml_type(doc)
## [1] "element"
xml_length(doc)
## [1] 36
# Extração do nome das plantas.
xml_find_all(doc, xpath = "//COMMON") %>%
    xml_text()
##  [1] "Bloodroot"           "Columbine"           "Marsh Marigold"     
##  [4] "Cowslip"             "Dutchman's-Breeches" "Ginger, Wild"       
##  [7] "Hepatica"            "Liverleaf"           "Jack-In-The-Pulpit" 
## [10] "Mayapple"            "Phlox, Woodland"     "Phlox, Blue"        
## [13] "Spring-Beauty"       "Trillium"            "Wake Robin"         
## [16] "Violet, Dog-Tooth"   "Trout Lily"          "Adder's-Tongue"     
## [19] "Anemone"             "Grecian Windflower"  "Bee Balm"           
## [22] "Bergamot"            "Black-Eyed Susan"    "Buttercup"          
## [25] "Crowfoot"            "Butterfly Weed"      "Cinquefoil"         
## [28] "Primrose"            "Gentian"             "Blue Gentian"       
## [31] "Jacob's Ladder"      "Greek Valerian"      "California Poppy"   
## [34] "Shooting Star"       "Snakeroot"           "Cardinal Flower"
# Extração com tratamento dos preços.
xml_find_all(doc, xpath = "//PRICE") %>%
    xml_text() %>%
    str_replace("\\$", "") %>%
    as.numeric()
##  [1] 2.44 9.37 6.81 9.90 6.44 9.03 4.45 3.99 3.23 2.98 2.80 5.59 6.59 3.90
## [15] 3.20 9.04 6.94 9.58 8.86 9.16 4.59 7.16 9.80 2.57 9.34 2.78 7.06 6.56
## [29] 7.81 8.56 9.26 4.36 7.89 8.60 5.63 3.02

Usando o pacote XML

library(XML)
## Loading required package: methods
packageVersion("XML")
## [1] '3.98.1.16'

Leitura

url <- "https://www.w3schools.com/Xml/plant_catalog.xml"
x <- readLines(url)

a <- xmlParse(x)
str(a)
## Classes 'XMLInternalDocument', 'XMLAbstractDocument' <externalptr>
a
## <?xml version="1.0" encoding="UTF-8"?>
## <CATALOG>
##   <PLANT>
##     <COMMON>Bloodroot</COMMON>
##     <BOTANICAL>Sanguinaria canadensis</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$2.44</PRICE>
##     <AVAILABILITY>031599</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Columbine</COMMON>
##     <BOTANICAL>Aquilegia canadensis</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$9.37</PRICE>
##     <AVAILABILITY>030699</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Marsh Marigold</COMMON>
##     <BOTANICAL>Caltha palustris</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Sunny</LIGHT>
##     <PRICE>$6.81</PRICE>
##     <AVAILABILITY>051799</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Cowslip</COMMON>
##     <BOTANICAL>Caltha palustris</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$9.90</PRICE>
##     <AVAILABILITY>030699</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Dutchman's-Breeches</COMMON>
##     <BOTANICAL>Dicentra cucullaria</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$6.44</PRICE>
##     <AVAILABILITY>012099</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Ginger, Wild</COMMON>
##     <BOTANICAL>Asarum canadense</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$9.03</PRICE>
##     <AVAILABILITY>041899</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Hepatica</COMMON>
##     <BOTANICAL>Hepatica americana</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$4.45</PRICE>
##     <AVAILABILITY>012699</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Liverleaf</COMMON>
##     <BOTANICAL>Hepatica americana</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$3.99</PRICE>
##     <AVAILABILITY>010299</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Jack-In-The-Pulpit</COMMON>
##     <BOTANICAL>Arisaema triphyllum</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$3.23</PRICE>
##     <AVAILABILITY>020199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Mayapple</COMMON>
##     <BOTANICAL>Podophyllum peltatum</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$2.98</PRICE>
##     <AVAILABILITY>060599</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Phlox, Woodland</COMMON>
##     <BOTANICAL>Phlox divaricata</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$2.80</PRICE>
##     <AVAILABILITY>012299</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Phlox, Blue</COMMON>
##     <BOTANICAL>Phlox divaricata</BOTANICAL>
##     <ZONE>3</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$5.59</PRICE>
##     <AVAILABILITY>021699</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Spring-Beauty</COMMON>
##     <BOTANICAL>Claytonia Virginica</BOTANICAL>
##     <ZONE>7</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$6.59</PRICE>
##     <AVAILABILITY>020199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Trillium</COMMON>
##     <BOTANICAL>Trillium grandiflorum</BOTANICAL>
##     <ZONE>5</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$3.90</PRICE>
##     <AVAILABILITY>042999</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Wake Robin</COMMON>
##     <BOTANICAL>Trillium grandiflorum</BOTANICAL>
##     <ZONE>5</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$3.20</PRICE>
##     <AVAILABILITY>022199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Violet, Dog-Tooth</COMMON>
##     <BOTANICAL>Erythronium americanum</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$9.04</PRICE>
##     <AVAILABILITY>020199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Trout Lily</COMMON>
##     <BOTANICAL>Erythronium americanum</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$6.94</PRICE>
##     <AVAILABILITY>032499</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Adder's-Tongue</COMMON>
##     <BOTANICAL>Erythronium americanum</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$9.58</PRICE>
##     <AVAILABILITY>041399</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Anemone</COMMON>
##     <BOTANICAL>Anemone blanda</BOTANICAL>
##     <ZONE>6</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$8.86</PRICE>
##     <AVAILABILITY>122698</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Grecian Windflower</COMMON>
##     <BOTANICAL>Anemone blanda</BOTANICAL>
##     <ZONE>6</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$9.16</PRICE>
##     <AVAILABILITY>071099</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Bee Balm</COMMON>
##     <BOTANICAL>Monarda didyma</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$4.59</PRICE>
##     <AVAILABILITY>050399</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Bergamot</COMMON>
##     <BOTANICAL>Monarda didyma</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$7.16</PRICE>
##     <AVAILABILITY>042799</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Black-Eyed Susan</COMMON>
##     <BOTANICAL>Rudbeckia hirta</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Sunny</LIGHT>
##     <PRICE>$9.80</PRICE>
##     <AVAILABILITY>061899</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Buttercup</COMMON>
##     <BOTANICAL>Ranunculus</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$2.57</PRICE>
##     <AVAILABILITY>061099</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Crowfoot</COMMON>
##     <BOTANICAL>Ranunculus</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$9.34</PRICE>
##     <AVAILABILITY>040399</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Butterfly Weed</COMMON>
##     <BOTANICAL>Asclepias tuberosa</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Sunny</LIGHT>
##     <PRICE>$2.78</PRICE>
##     <AVAILABILITY>063099</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Cinquefoil</COMMON>
##     <BOTANICAL>Potentilla</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$7.06</PRICE>
##     <AVAILABILITY>052599</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Primrose</COMMON>
##     <BOTANICAL>Oenothera</BOTANICAL>
##     <ZONE>3 - 5</ZONE>
##     <LIGHT>Sunny</LIGHT>
##     <PRICE>$6.56</PRICE>
##     <AVAILABILITY>013099</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Gentian</COMMON>
##     <BOTANICAL>Gentiana</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$7.81</PRICE>
##     <AVAILABILITY>051899</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Blue Gentian</COMMON>
##     <BOTANICAL>Gentiana</BOTANICAL>
##     <ZONE>4</ZONE>
##     <LIGHT>Sun or Shade</LIGHT>
##     <PRICE>$8.56</PRICE>
##     <AVAILABILITY>050299</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Jacob's Ladder</COMMON>
##     <BOTANICAL>Polemonium caeruleum</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$9.26</PRICE>
##     <AVAILABILITY>022199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Greek Valerian</COMMON>
##     <BOTANICAL>Polemonium caeruleum</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$4.36</PRICE>
##     <AVAILABILITY>071499</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>California Poppy</COMMON>
##     <BOTANICAL>Eschscholzia californica</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Sun</LIGHT>
##     <PRICE>$7.89</PRICE>
##     <AVAILABILITY>032799</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Shooting Star</COMMON>
##     <BOTANICAL>Dodecatheon</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Mostly Shady</LIGHT>
##     <PRICE>$8.60</PRICE>
##     <AVAILABILITY>051399</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Snakeroot</COMMON>
##     <BOTANICAL>Cimicifuga</BOTANICAL>
##     <ZONE>Annual</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$5.63</PRICE>
##     <AVAILABILITY>071199</AVAILABILITY>
##   </PLANT>
##   <PLANT>
##     <COMMON>Cardinal Flower</COMMON>
##     <BOTANICAL>Lobelia cardinalis</BOTANICAL>
##     <ZONE>2</ZONE>
##     <LIGHT>Shade</LIGHT>
##     <PRICE>$3.02</PRICE>
##     <AVAILABILITY>022299</AVAILABILITY>
##   </PLANT>
## </CATALOG>
## 

Propriedades

class(a)
## [1] "XMLInternalDocument" "XMLAbstractDocument"
xmlSize(a)
## [1] 1
summary(a)
## $nameCounts
## 
## AVAILABILITY    BOTANICAL       COMMON        LIGHT        PLANT 
##           36           36           36           36           36 
##        PRICE         ZONE      CATALOG 
##           36           36            1 
## 
## $numNodes
## [1] 253

Conversão

b <- xmlToList(a)
str(b)
## List of 36
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Bloodroot"
##   ..$ BOTANICAL   : chr "Sanguinaria canadensis"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$2.44"
##   ..$ AVAILABILITY: chr "031599"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Columbine"
##   ..$ BOTANICAL   : chr "Aquilegia canadensis"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$9.37"
##   ..$ AVAILABILITY: chr "030699"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Marsh Marigold"
##   ..$ BOTANICAL   : chr "Caltha palustris"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Sunny"
##   ..$ PRICE       : chr "$6.81"
##   ..$ AVAILABILITY: chr "051799"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Cowslip"
##   ..$ BOTANICAL   : chr "Caltha palustris"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$9.90"
##   ..$ AVAILABILITY: chr "030699"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Dutchman's-Breeches"
##   ..$ BOTANICAL   : chr "Dicentra cucullaria"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$6.44"
##   ..$ AVAILABILITY: chr "012099"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Ginger, Wild"
##   ..$ BOTANICAL   : chr "Asarum canadense"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$9.03"
##   ..$ AVAILABILITY: chr "041899"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Hepatica"
##   ..$ BOTANICAL   : chr "Hepatica americana"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$4.45"
##   ..$ AVAILABILITY: chr "012699"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Liverleaf"
##   ..$ BOTANICAL   : chr "Hepatica americana"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$3.99"
##   ..$ AVAILABILITY: chr "010299"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Jack-In-The-Pulpit"
##   ..$ BOTANICAL   : chr "Arisaema triphyllum"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$3.23"
##   ..$ AVAILABILITY: chr "020199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Mayapple"
##   ..$ BOTANICAL   : chr "Podophyllum peltatum"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$2.98"
##   ..$ AVAILABILITY: chr "060599"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Phlox, Woodland"
##   ..$ BOTANICAL   : chr "Phlox divaricata"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$2.80"
##   ..$ AVAILABILITY: chr "012299"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Phlox, Blue"
##   ..$ BOTANICAL   : chr "Phlox divaricata"
##   ..$ ZONE        : chr "3"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$5.59"
##   ..$ AVAILABILITY: chr "021699"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Spring-Beauty"
##   ..$ BOTANICAL   : chr "Claytonia Virginica"
##   ..$ ZONE        : chr "7"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$6.59"
##   ..$ AVAILABILITY: chr "020199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Trillium"
##   ..$ BOTANICAL   : chr "Trillium grandiflorum"
##   ..$ ZONE        : chr "5"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$3.90"
##   ..$ AVAILABILITY: chr "042999"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Wake Robin"
##   ..$ BOTANICAL   : chr "Trillium grandiflorum"
##   ..$ ZONE        : chr "5"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$3.20"
##   ..$ AVAILABILITY: chr "022199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Violet, Dog-Tooth"
##   ..$ BOTANICAL   : chr "Erythronium americanum"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$9.04"
##   ..$ AVAILABILITY: chr "020199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Trout Lily"
##   ..$ BOTANICAL   : chr "Erythronium americanum"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$6.94"
##   ..$ AVAILABILITY: chr "032499"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Adder's-Tongue"
##   ..$ BOTANICAL   : chr "Erythronium americanum"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$9.58"
##   ..$ AVAILABILITY: chr "041399"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Anemone"
##   ..$ BOTANICAL   : chr "Anemone blanda"
##   ..$ ZONE        : chr "6"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$8.86"
##   ..$ AVAILABILITY: chr "122698"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Grecian Windflower"
##   ..$ BOTANICAL   : chr "Anemone blanda"
##   ..$ ZONE        : chr "6"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$9.16"
##   ..$ AVAILABILITY: chr "071099"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Bee Balm"
##   ..$ BOTANICAL   : chr "Monarda didyma"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$4.59"
##   ..$ AVAILABILITY: chr "050399"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Bergamot"
##   ..$ BOTANICAL   : chr "Monarda didyma"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$7.16"
##   ..$ AVAILABILITY: chr "042799"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Black-Eyed Susan"
##   ..$ BOTANICAL   : chr "Rudbeckia hirta"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Sunny"
##   ..$ PRICE       : chr "$9.80"
##   ..$ AVAILABILITY: chr "061899"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Buttercup"
##   ..$ BOTANICAL   : chr "Ranunculus"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$2.57"
##   ..$ AVAILABILITY: chr "061099"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Crowfoot"
##   ..$ BOTANICAL   : chr "Ranunculus"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$9.34"
##   ..$ AVAILABILITY: chr "040399"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Butterfly Weed"
##   ..$ BOTANICAL   : chr "Asclepias tuberosa"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Sunny"
##   ..$ PRICE       : chr "$2.78"
##   ..$ AVAILABILITY: chr "063099"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Cinquefoil"
##   ..$ BOTANICAL   : chr "Potentilla"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$7.06"
##   ..$ AVAILABILITY: chr "052599"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Primrose"
##   ..$ BOTANICAL   : chr "Oenothera"
##   ..$ ZONE        : chr "3 - 5"
##   ..$ LIGHT       : chr "Sunny"
##   ..$ PRICE       : chr "$6.56"
##   ..$ AVAILABILITY: chr "013099"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Gentian"
##   ..$ BOTANICAL   : chr "Gentiana"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$7.81"
##   ..$ AVAILABILITY: chr "051899"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Blue Gentian"
##   ..$ BOTANICAL   : chr "Gentiana"
##   ..$ ZONE        : chr "4"
##   ..$ LIGHT       : chr "Sun or Shade"
##   ..$ PRICE       : chr "$8.56"
##   ..$ AVAILABILITY: chr "050299"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Jacob's Ladder"
##   ..$ BOTANICAL   : chr "Polemonium caeruleum"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$9.26"
##   ..$ AVAILABILITY: chr "022199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Greek Valerian"
##   ..$ BOTANICAL   : chr "Polemonium caeruleum"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$4.36"
##   ..$ AVAILABILITY: chr "071499"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "California Poppy"
##   ..$ BOTANICAL   : chr "Eschscholzia californica"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Sun"
##   ..$ PRICE       : chr "$7.89"
##   ..$ AVAILABILITY: chr "032799"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Shooting Star"
##   ..$ BOTANICAL   : chr "Dodecatheon"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Mostly Shady"
##   ..$ PRICE       : chr "$8.60"
##   ..$ AVAILABILITY: chr "051399"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Snakeroot"
##   ..$ BOTANICAL   : chr "Cimicifuga"
##   ..$ ZONE        : chr "Annual"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$5.63"
##   ..$ AVAILABILITY: chr "071199"
##  $ PLANT:List of 6
##   ..$ COMMON      : chr "Cardinal Flower"
##   ..$ BOTANICAL   : chr "Lobelia cardinalis"
##   ..$ ZONE        : chr "2"
##   ..$ LIGHT       : chr "Shade"
##   ..$ PRICE       : chr "$3.02"
##   ..$ AVAILABILITY: chr "022299"

c <- xmlToDataFrame(a)
str(c)
## 'data.frame':    36 obs. of  6 variables:
##  $ COMMON      : Factor w/ 36 levels "Adder's-Tongue",..: 6 13 25 14 16 18 21 24 22 26 ...
##  $ BOTANICAL   : Factor w/ 25 levels "Anemone blanda",..: 24 2 6 6 9 4 14 14 3 19 ...
##  $ ZONE        : Factor w/ 8 levels "2","3","3 - 5",..: 4 2 4 4 2 2 4 4 4 2 ...
##  $ LIGHT       : Factor w/ 6 levels "Mostly Shady",..: 1 1 2 1 1 1 1 1 1 1 ...
##  $ PRICE       : Factor w/ 36 levels "$2.44","$2.57",..: 1 33 19 36 16 28 12 10 8 5 ...
##  $ AVAILABILITY: Factor w/ 32 levels "010299","012099",..: 11 10 22 10 2 16 4 1 6 25 ...

Valores e atributos

text <- '
<person gender="female" bithday="23-May">Ana Smith</person>'

a <- xmlParse(text, asText = TRUE)
str(a)
## Classes 'XMLInternalDocument', 'XMLAbstractDocument' <externalptr>
a
## <?xml version="1.0"?>
## <person gender="female" bithday="23-May">Ana Smith</person>
## 
b <- xmlRoot(a)
str(b)
## Classes 'XMLInternalElementNode', 'XMLInternalNode', 'XMLAbstractNode' <externalptr>
b
## <person gender="female" bithday="23-May">Ana Smith</person>
xmlAttrs(b)
##   gender  bithday 
## "female" "23-May"
xmlValue(b)
## [1] "Ana Smith"