簡體   English   中英

使用 readtext 從 XML 中提取文本

[英]Using readtext to extract text from XML

我不習慣使用 XML 文件,但需要從 XML 文件的各個字段中提取文本。 Specifically, I've downloaded and saved XML files like the following: https://www.federalregister.gov/documents/full_text/xml/2007/09/18/07-4595.xml . 我對這個和其他類似 XML 文件中標簽“regtext”中的文本感興趣。

我已經下載了 XML 文件並將它們存儲在我的計算機上,但是當我設置目錄並嘗試使用 readtext package 從 XML 文件中讀取時,我得到以下錯誤:

regtext <- readtext("/regdata/RegDataValidation", text_field = "regtext")
Error in doc_parse_file(con, encoding = encoding, as_html = as_html, options = options) : 
  Start tag expected, '<' not found [4]

我試圖搜索錯誤,但我遇到的任何事情都無法幫助我弄清楚可能發生了什么。 這個基本命令對任何數量的其他文檔類型都很有效,包括.csv 或.docx,但由於某種原因,它似乎無法識別我在這里嘗試使用的文件。 任何指針都將不勝感激——我太新手了,所有關於 readtext 的文檔都沒有給出如何使用 XML 的示例。

根據下面的評論,我還嘗試指定一個保存的 XML 文件,如下所示:

> regtext <- readtext("/regdata/RegDataValidation/0579- AC01.xml", text_field = "regtext")
Error in xml2_to_dataframe(xml) : 
  The xml format does not fit for the extraction without xPath
  Use xPath method instead
In addition: There were 50 or more warnings (use warnings() to see the first 50)

我試圖在單個文件上指定 xPath 表達式,這沒有返回任何錯誤,但實際上沒有提取任何文本(即使“regtext”節點中應該有大量文本:

> regtext <- readtext("/regdata/RegDataValidation/0579- AC01.xml", text_field = "/regtext/*")

我最終得到一個 dataframe 具有正確的 doc_id,但沒有文本。

From the error messages, the readtext function appears to be converting the xml file into a plain text document and the XML package is not accepting it as a valid document.

XML 解析器也可能區分“regtext”和“REGTEXT”。

這是使用 xml2 package 的解決方案。 (我發現這個 package 提供了更簡單的界面,更容易使用)

library(xml2)

url <- "https://www.federalregister.gov/documents/full_text/xml/2007/09/18/07-4595.xml"
page <- read_xml(url)

#parse out the nodes within the "REGTEXT" sections
regtext <- xml_find_all(page, ".//REGTEXT")

#convert the regtext nodes into vector of strings
xml_text(regtext)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM