如何使用R将嵌套列表转换为xml

时间:2016-09-22 15:09:18

标签: r xml-parsing

我是kml文件,想在特定的地方添加节点,所以我写了这段代码..

root <- newXMLNode("root")
listToXML <- function(node, sublist){
    for(i in 1:length(sublist)){
        child <- newXMLNode(names(sublist)[i], parent=node);

        if (typeof(sublist[[i]]) == "list"){
            listToXML(child, sublist[[i]])
        }
        else{
            xmlValue(child) <- sublist[[i]]
        }
    } 
}
listToXML(root,xml_data)

这是我发现将HTML代码添加到xml代码中的特定位置的唯一方法,但是当我转换&#34; top&#34;到&#34;描述&#34; ,数据的结构变得无用,所以有没有办法将html代码附加到xml_data而不转换&#34; top&#34;列表?

我得到了一个将嵌套列表转换为xml的函数,但问题是在html中编写的代码将转换为xml并且不再有用。

$(document).ready(function(){

$(window).scrollTop(function(){

$(this).scroll(function(){

var scrollTopOrBottom = $(document).height() - $(window).height() - $(window).scrollTop();

  if(flag === 0 && scrollTopOrBottom < 1256){
    $('#blueDiv').animate({right: '200px'}, function(){
        flag = 1;
    });
 }

if(flag === 1 && scrollTopOrBottom < 740){
    console.log(scrollTopOrBottom);
 $('#blueDiv').slideLeft();
    flag = 0;
   }    

     });
  });   

});

Jeff Allen在此link

撰写的这篇文章

所以,请问有没有办法将这个html代码附加到xml上,当将列表解析为xml时,html代码仍然是html而不是转换为xml?

here's我的kml文件

1 个答案:

答案 0 :(得分:3)

htmltools包允许您构建嵌套节点,您可以使用xmlParseString()函数来获取节点:

library(htmltools)
library(magrittr)

tag("a", list(attr1="a1", attr2="a2", 
              tag("b", list(tag("c", list(attr1="c1", "C Content")), 
                            "B Content")), 
              "A Content"))  %>% 
  toString() %>% 
  xmlParseString() %>%
  str()
## Classes 'XMLInternalElementNode', 'XMLInternalNode', 'XMLAbstractNode' <externalptr>