私はXMLに新しく、大きなファイルを扱うときはxmlEventParse()とgetNodeSet()をRで使用することをお勧めします。理由を知っている。おそらくパスの不適切な定義ですか?xmlEventParseは空のデータフレームを返します
元のファイルのように見えるダミーXMLファイルは、このリンクで見つけることができます: dummy xml file
そして、私のダミーのRコードはこのようです:
library(XML)
FOOid_traverse <- function() {
uids <- c()
refs <- c()
REC <- function(x) {
uid <- xpathSApply(x, "//N8:EntityList/N8:Entity/N2:OrganisationName",
xmlValue)
ref <- xpathSApply(x, "//N8:EntityList/N8:Entity/N5:Identifiers/N5:Identifier/N5:IdentifierElement", xmlValue)
if (length(uid) > 0) {
if (length(ref) == 0) {
uids <<- c(uids, uid)
refs <<- c(refs, NA_character_)
} else {
uids <<- c(uids, rep(uid, length(ref)))
refs <<- c(refs, ref)
}
}
}
list(
REC = REC,
FOOid_df = function() {
data.frame(uid = uids, ref = refs, stringsAsFactors = FALSE)
}
)
}
FOOid_f < - FOOid_traverse()
目に見えない( xmlEventParse( ファイル= path.expand( "companies_xml_extract_20170703.xml")、 支店= FOOid_f [ "REC"]) )
FOOid_f $ FOOid_df()
おかげ
あなたはplsは平野言葉であなたの期待を説明することができますか? – Prem
OrganisationNameとIdentifierElementを持つデータフレームに列ヘッダーが必要です。つまり、N8:EntityList/N8:EntityList/N5:OrganisationNameとN8:EntityList/N8:Entity/N5:Identifiers/N5:Identifier/N5:IdentifierElementパスに格納されているデータを抽出することになります。 – William
Isn ' tmlは不完全ですか?あなたのポストでそれを修正する必要があるかもしれません。 – Prem