Как закодировать все XML специальные символы в R? - PullRequest
0 голосов
/ 18 апреля 2020

Существует ли простое исправление регулярного выражения для замены всех XML специальных символов ('&', '<', '>', et c) в грязном файле XML в R так, что он меняет только символы в тексте а не символы в тегах?

Другими словами, первый пример, приведенный ниже, работает нормально, а второй - не из-за специального символа «<», куда идет фактический текст - этот паразит «<» необходимо кодировать по-другому, чтобы синтаксический анализатор не будет go искать тег. </p>

text1 <- c('<something>', '<text>', 'something', '</text>', '</something>')
xml1 <- xmlTreeParse(text1, useInternalNodes=TRUE)
text.xml1 <- xpathApply(xml1, "//text", xmlValue)
text.xml1 <- lapply(text.xml1, function(x) read.delim(text=gsub("\n", "\n", x, perl=TRUE), header=FALSE, quote = ""))
text2 <- c('<something>', '<text>', '<', '</text>', '</something>')
xml2 <- xmlTreeParse(text2, useInternalNodes=TRUE)
text.xml2 <- xpathApply(xml2, "//text", xmlValue)
text.xml2 <- lapply(text.xml2, function(x) read.delim(text=gsub("\n", "\n", x, perl=TRUE), header=FALSE, quote = ""))

Я получаю сообщение об ошибке «StartTag: недопустимое имя элемента» при синтаксическом анализе с xmlTreeParse(text2, useInternalNodes=TRUE) из-за таких символов. Я попробовал строку ниже, но с регулярным выражением что-то не так, и я не могу понять, что:

text2 <- gsub('<(?![_:a-z][-._:a-z0-9]*\b[^<>]*>)', '&lt;', text2)

...