我认为这个问题之前可能已被问过,但经过研究我无法找到任何结果。我是解析XML文档的新手。我试图解析一个看起来像这样的XML页面:
schedule = xmlParse("MYXML.XML")
# here's what schedule looks like
<all-games>
<game-schedule gameid="1">
<player name="Joe">
<player name="Mike">
<player name="Steve">
</game-schedule>
<game-schedule gameid="2">
<player name="Rick">
<player name="John">
<player name="Karl">
</game-schedule>
</all-games>
# here's my code to parse the XML
my_df = data.frame(
gameID = sapply(schedule["//game-schedule/@gameid"], as, "integer"),
player = sapply(schedule["//game-schedule/player/@name"], as, "character")
)
但它并没有给我我想要的东西。我想解析数据帧,以便为游戏中的玩家数量重复gameID。也就是说,我试图获得以下数据帧:
my_df
gameID player
1 1 Joe
2 1 Mike
3 1 Steve
4 2 Rick
5 2 John
6 2 Karl
非常感谢任何帮助。看起来像我应该能够做的事情,因为我经常需要以这种方式解析XML。
答案 0 :(得分:3)
考虑在XPath中使用节点索引迭代$.ajax({
type: "POST",
url: "/Token",
data: JSON.stringify(model),
contentType: 'application/json',
success: function (response) {
var json = JSON.parse(response);
localStorage.setItem("accesstoken", json["access_token"]);
if (isTwoFactorRequired() != false)
{
localStorage.setItem("twofactorrequired", true);
}
window.location.href = "/Home/Index";
},
failure: function (errMsg) {
}
});
function isTwoFactorRequired() {
if (localStorage.getItem("twofactorrequired") == false) {
return false;
}
else {
return true;
}
个节点的长度:
for (int i=0; i>60; i++);
答案 1 :(得分:1)
这是在fill
包
tidy
的另一种方法
XML:::xmlAttrsToDataFrame(schedule["//all-games//*"]) %>% fill(gameid) %>% filter(!is.na(name))
gameid name
1 1 Joe
2 1 Mike
3 1 Steve
4 2 Rick
5 2 John
6 2 Karl