【发布时间】:2011-03-24 20:03:57
【问题描述】:
背景
我有一个 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
问题
我有两个问题:
如何提取 'level4type1` 的唯一值的向量
有没有更好的方法来做到这一点?
【问题讨论】:
-
我已经提交了issue on GitHub。此问题链接到
xmlToList的替代实现,它不会表现出此行为(但可能包含其他问题)。