问题标签 [xml2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
653 浏览

r - 通过 xpath 表达式将 XML 文档快速拆分为 data.frames

我编写了一个函数来将(大型)异构 XML 文件拆分为数据帧,其中拆分是通过 xpath 表达式完成的。我所说的异质是指感兴趣的项目属于一组不同的“列”结构。但是,对于大型ish XML 文件,比如 50K 项和 5 种类型,代码似乎比我预期的更“缓慢”。

那么问题是:是否存在我错过的执行此操作的现有功能,如果没有,是否有明显的方法可以提高下面代码的速度?

这是我正在考虑的那种 XML 结构的最小示例:

目标是将其转换为N个数据帧,其中N是其中唯一值的数量//item/Type(在解析时未知)。

这是我的实现:

最小示例的结果(每帧只有一行)是:

0 投票
4 回答
2315 浏览

r - R rvest:找不到函数“xpath_element”

我试图简单地复制 的示例rvest::html_nodes(),但遇到错误:

do.call(method, list(parsed_selector)) 中的错误:找不到函数“xpath_element”

如果我加载诸如httr, xml2,之类的包也会发生同样的情况selectr。我似乎也有这些软件包的最新版本......

诸如xpath_element,之类的函数xpath_combinedselector位于哪些包中?我如何让它工作?请注意,我在 Ubuntu 16.04 上运行,因此该代码可能在其他平台上运行......

0 投票
1 回答
934 浏览

r - Extracting nodes by name

I am trying to parse an XML file with xml2. But I cannot for the life of me figure out how to do it by specifying the name.

This works:

-->

And I can extract by position both step-by-step and with xpath:

_



However my attemps to select by name are failing.

and

and



Can somehow point me to the solution that is somehow escaping me?



EDIT:

OK here is a data example. With that data what I want is

But selected by name.

0 投票
1 回答
89 浏览

r - 在 R 中解析非嵌套的 XML 标签

我正在尝试使用出色的xml2R 库解析许多文档。例如,考虑以下 XML 文件:

其中包含许多<speech>标签,这些标签是分开的,尽管没有嵌套在其中,但也有许多<minor-heading><major-heading>标签。我想将此文档处理为data.frame具有以下结构的结果:

不幸的是,因为标签没有嵌套,我不知道该怎么做!我有成功恢复相关信息的代码(见下文),但将语音标签与其各自的主要标题匹配是我无法做到的。

我的直觉是,最好在标题标签处拆分 XML 文档,然后将每个文档作为单独的文档处理,但我在xml2包中找不到可以让我这样做的函数!

任何帮助都会很棒。

到目前为止我已经到达的地方:

0 投票
1 回答
1083 浏览

r - R: How to best extract two XML attributes from a node?

The following code extracts one attribute (or all) from an XML file:

Item looks like this:

Sample file can be viewed here: https://raw.githubusercontent.com/wardblonde/ODM-to-i2b2/master/odm/examples/CDISC_ODM_example_3.xml

Using pipes and xml_attr, what is the best way to extract both the Name and DataType attributes and have them rbinded?

Ideally it would be a single line of super efficient piped code. I can extract names and types and have 'data.frame(name=names,type=types)' but that seems not the best and most modern.

The result should be a tibble with columns name and data type.

0 投票
1 回答
613 浏览

r - 具有正确字符编码的 xml2::read_html 在 Ubuntu 上崩溃

xml2::read_html 在尝试使用正确的字符编码时会在 Ubuntu(但不是 Mac)上崩溃。

错误是:

doc_parse_raw 中的错误(x,编码 = 编码,base_url = base_url,as_html = as_html,:basic_string::_M_replace_aux

因为问题发生在 Ubuntu 而不是 Mac 上,所以尝试使用安装最新版本的 xml2 库

仍然有一个错误,虽然是一个不同的错误:

doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, 错误:由于输入错误,输入转换失败,字节 0xFB 0x7C 0xB7 0x51 [6003]

我不确定为什么传递正确的编码会使 libxlm2 崩溃。有什么想法可以做什么?

这是我的 Ubuntu sessionInfo():

0 投票
2 回答
129 浏览

r - xml2:在同一行中指定文本后抓取数组中的文本

我有一堆envelope元素的 XML。每个内部都是一个数组。数组中的每一行都有 2 个元素。第一个是标识符,第二个是我要抓取的文本。我需要行的第一个值来识别正确的行,以便我可以获取正确的值。

在下面的示例中,我在用代码表示的行中有“食物” 610954。我想抓住这段代码之后的 2 个元素(c('pizza', 'burger')。同样有代码表示的“饮料” 605380。我想抓住c('coke', 'pepsi')。我怎样才能使用xml2包来做到这一点?

0 投票
1 回答
129 浏览

r - R:xml2 提取的节点比预期的多

我不明白为什么这段代码

匹配许多超出目标<div>元素范围的 URL。

如果您查看目标页面的 HTML 源代码:

  • 只有一个<div>符合我的查询。它从第 177 行开始。
  • <div>停靠在 396 号线。
  • 然而,html_nodes上面代码中返回的许多 URL 都是从该行之外的节点中提取的,该<div>.

注意:您可能会注意到,在 HTML 的第 242 行,有一个错误的</div元素。但是,修复它似乎并不能解决问题。

我猜这个问题与xml2(即libxml2)如何解析代码有关。

还有其他想法吗?

0 投票
1 回答
228 浏览

r - xml - 即使元素文本丢失,也可以抓取子子子项并在子项内折叠

我有一个嵌套的 xml 数据集,如下所示,我正在尝试使用xml2tidyverse包进行解析。有三个儿童信封。我想获取每个标签中的子标签和子标签的所有文本,<card-id>并使用易于识别的分隔符将它们折叠起来,或者从中制作一个 data.frames 列表。<value><envelope>;;;

MWE:这是数据:

期望的输出:

或者像这样的嵌套列表一样好(也许更好):

我想我可以as_list在孩子身上使用,然后xml_find_all用来创建一个 data.frames 列表,但是as_list+lapply不只攻击一个envelope,而是在每次通过时都会攻击它们(我很高兴知道我错过了什么这个功能也是)。

我试过的

0 投票
1 回答
2136 浏览

r - 将 Excel xml 文件读入 R

我正在尝试使用 xml2 来读取 Excel xml 文件,但我遇到了困难,因为我拥有的文件与 xml2 文档中用于示例的结构如此不同。我想从工作簿中读取其中一个工作表并将其用作数据框。

这个片段包括完整的结构,但只有一个单元格填充了一堆文本,而我要阅读的内容有 50,000 行数据。