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"