2019-05-11
<?xml version="1.0"?> <小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條>
<?xml version="1.0"?> <小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條>
<?xml version="1.0"?> <小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條>
<收件人> ... </具體內容>大元小張問候早啊,飯吃了沒?<具體內容>早啊,飯吃了沒? </具體內容>
<具體內容 font="新細明體" size="12">早啊,飯吃了沒? </具體內容>
<具體內容>有以下的標籤:
font:新細明體size:12<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
(HyperText Markup Language)
<foo/>代替<foo></foo>
<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("books.xml");
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>
x <- '<?xml version="1.0"?> <小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條> '
. <- strsplit(x, "\n")
. <- .[[1]]
. <- .[grepl("主題", .)]
. <- gsub("<主題>", "", .)
gsub("</主題>", "", .)
## [1] " 問候"
library(xml2) doc <- read_xml(x) . <- xml_find_first(doc, "/小紙條/主題") xml_text(.)
## [1] "問候"
<小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條>
<小紙條>是<主題>的父標籤
<收件人>、<發件人>、<主題>與<具體內容>都是<小紙條>的子標籤<小紙條>是這份XML文件的根<html>是所有網頁的根
doc <- read_xml(x) class(doc) ## [1] "xml_document" "xml_node" doc ## {xml_document}
## <小紙條>
## [1] <收件人>大元</收件人>
## [2] <發件人>小張</發件人>
## [3] <主題>問候</主題>
## [4] <具體內容>早啊,飯吃了沒? </具體內容>
|
root <- xml_root(doc) class(root) ## [1] "xml_document" "xml_node" root ## {xml_document}
## <小紙條>
## [1] <收件人>大元</收件人>
## [2] <發件人>小張</發件人>
## [3] <主題>問候</主題>
## [4] <具體內容>早啊,飯吃了沒? </具體內容>
|
<收件人>、<發件人>、<主題>、<具體內容>是<小紙條>的子(child)節點
## [,1] [,2] ## [1,] 0.500 0.75 ## [2,] 0.125 0.25 ## [3,] 0.375 0.25 ## [4,] 0.625 0.25 ## [5,] 0.875 0.25
node <- xml_root(doc) node ## {xml_document}
## <小紙條>
## [1] <收件人>大元</收件人>
## [2] <發件人>小張</發件人>
## [3] <主題>問候</主題>
## [4] <具體內容>早啊,飯吃了沒? </具體內容>
|
|
xml_children(node) ## {xml_nodeset (4)}
## [1] <收件人>大元</收件人>
## [2] <發件人>小張</發件人>
## [3] <主題>問候</主題>
## [4] <具體內容>早啊,飯吃了沒? </具體內容>
|
|
node <- xml_children(node)[[2]] node ## {xml_node}
## <發件人>
|
|
node <- xml_parent(node) node ## {xml_node}
## <小紙條>
## [1] <收件人>大元</收件人>
## [2] <發件人>小張</發件人>
## [3] <主題>問候</主題>
## [4] <具體內容>早啊,飯吃了沒? </具體內容>
|
|
<小紙條> <收件人>大元</收件人> <發件人>小張</發件人> <主題>問候</主題> <具體內容>早啊,飯吃了沒? </具體內容> </小紙條>
/小紙條小紙條下的主題:/小紙條/主題//主題
xml_find_first(doc, "/小紙條/主題") ## {xml_node}
## <主題>
|
|
xml_find_all(doc, "/小紙條/主題") ## {xml_nodeset (1)}
## [1] <主題>問候</主題>
|
|
tmp.path <- tempfile(fileext = ".html")
download.file("http://homepage.ntu.edu.tw/~wush978/rdataengineer/0080400004.html", destfile = tmp.path)
browseURL(tmp.path)
x <- read_html(tmp.path)
機關代碼、機關名稱等標籤內容,代表的是右邊的標籤內容的「資料名稱」tr標籤底下的th與td
th標籤的內容td標籤的內容tr底下的th. <- xml_find_all(x, "//tr/th") . <- sapply(., xml_text) head(.)
## [1] "機關代碼" "機關名稱" "單位名稱" "機關地址" "聯絡人" "聯絡電話"
tail(.)
## [1] "總決標金額" ## [2] "總決標金額是否公開" ## [3] "契約是否訂有依物價指數調整價金規定" ## [4] "未列物價調整規定說明" ## [5] "履約執行機關" ## [6] "附加說明"
tr底下的tdth <- xml_find_all(x, "//tr/th") td <- xml_find_all(x, "//tr/td") length(th)
## [1] 116
length(td)
## [1] 214
td太多了th旁邊的tdth <- xml_find_all(x, "//tr/th") td <- xml_find_all(x, "//tr/th/../td") length(th)
## [1] 116
length(td)
## [1] 116
th.text <- sapply(th, xml_text) td.text <- sapply(td, xml_text) td.text <- trimws(td.text) td.text[th.text == "機關名稱"]
## [1] "台灣電力股份有限公司"
td.text <- trimws(td.text) td.text[th.text == "標案名稱"]
## [1] "套管插頭等壹批"