gpt4 book ai didi

xml - 解析 xml 以在 R : how to consistently access nodes when xml structure varies? 中列出

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:52 24 4
gpt4 key购买 nike

背景

我有一个如下所示的 xml 设置文件:

<level1>
<level2>
<level3>
<level4name>bob</level4name>
</level3>
</level2>
</level1>

但是 level3 可以有多个实例

<level1>
<level2>
<level3>
<level4name>bob</level4name>
</level3>
<level3>
<level4name>jack</level4name>
</level3>
<level3>
<level4name>jill</level4name>
</level3>
</level2>
</level1>

每个level3也可以有多种类型的level4节点:

   <level3>
<level4name>bob</level4name>
<level4dir>/home/bob/ </level4dir>
<level4logical>TRUE</level4logical>
</level3>

在 R 中,我使用

加载这个文件
settings.xml <- xmlTreeParse(settings.file)
settings <- xmlToList(settings.xml)

我想编写一个脚本,将 level4type1 中包含的所有值转换为该级别唯一值的向量,但我很难尝试以适用于上述所有情况。

其中一个问题是 class(settings[['level2']]) 是前两种情况的列表和第三种情况的矩阵。

> xmlToList(xmlTreeParse('case1.xml'))
$level2.level3.level4name
[1] "bob"
> xmlToList(xmlTreeParse('case2.xml'))
level2
level3.level4name "bob"
level3.level4name "jack"
level3.level4name "jill"
> xmlToList(xmlTreeParse('case3.xml'))
level2
level3 List,3
level3 List,1
level3 List,1

问题

我有两个问题:

  1. 如何提取“level4type1”的唯一值向量

  2. 有更好的方法吗?

最佳答案

尝试使用 XML 的内部节点表示和 xpath语言,非常强大。

> xml = xmlTreeParse("case2.xml", useInternalNodes=TRUE)
> xpathApply(xml, "//level4name", xmlValue)
[[1]]
[1] "bob"

[[2]]
[1] "jack"

[[3]]
[1] "jill"

关于xml - 解析 xml 以在 R : how to consistently access nodes when xml structure varies? 中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5424859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com