我正在尝试使用这个出色的示例将一些 XML 代码转换为 R 数据框。不幸的是,自闭合标签似乎阻止了这种转换,我对 XML(和 R XML 包)的理解充其量只是新手。
根据w3schools 上的这个页面,自关闭标签在 XML 中似乎是合法的,所以我试图解析的代码并不是非常不正常。
下面的 R 代码将产生我遇到的问题。如果您删除<AlternateText/>
标签,代码将按我的预期工作。
此外,奇怪的是,如果您将其更改为<AlternateText xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
,那么它也可以工作。这种行为是预期的吗?
我想要么简单地从对象中删除所有自闭合标签,x
要么我想重新标记它们,这样它们就不会导致错误——有效地<AlternateText/>
变成类似<AlternateText></AlternateText>
.
x <-
'<outer>
<ProviderURL>
<URLCode>Valid</URLCode>
<URLAddress>http://mypage.com</URLAddress>
<AlternateText/>
</ProviderURL>
</outer>'
library( plyr )
library( XML )
y <-
xmlTreeParse(
x ,
asText = TRUE ,
useInternalNodes = TRUE
)
ldply( xmlToList( y ) , data.frame )
这段代码给了我:
Error in data.frame(URLCode = "Valid", URLAddress = "http://mypage.com", :
arguments imply differing number of rows: 1, 0