繁体   English   中英

如何使用 R 的 XML package 编写 RSS 格式的 XML 文档

[英]How to use R's XML package to write an XML document in RSS format

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

我正在尝试使用 R 的 XML package 创建一个 RSS 文档,但我遇到了麻烦。 这是我正在使用的代码:

df <- data.frame(Labels <- c("Label_1"),
                 Values <- c("Value_1")
)

# CREATE XML FILE
doc = newXMLDoc()
root = newXMLNode("rss", doc = doc)

# WRITE XML NODES AND DATA
channel = newXMLNode("channel", parent = root)
title = newXMLNode("title","Metrics", parent = channel)

for (i in 1:nrow(df)){
  prodNode = newXMLNode("Metric", parent = channel)
  
  # APPEND TO PRODUCT NODE
  newXMLNode("description", df$Labels[i], parent = prodNode)
  newXMLNode("item", df$Values[i], parent = prodNode)
}

# OUTPUT XML CONTENT TO CONSOLE
print(doc)

# OUTPUT XML CONTENT TO FILE
saveXML(doc, file="RSS_Output.xml")

这给了我以下 output,它不适用于 RSS 解析器,因为除其他外,错误的根节点。 任何想法如何更干净地生成 RSS 文件?

<?xml version="1.0"?>
<rss>
  <channel>
    <title>Metrics</title>
    <Metric>
      <description>Label_1</description>
      <item>Value_1</item>
    </Metric>
  </channel>
</rss>

您混合了Metricitem节点。 根据RSS规范(请参阅https://www.w3schools.com/xml/xml_rss.asp ), channel包含 1 个或多个item元素

df <- data.frame(Labels <- c("Label_1"),
                 Values <- c("Value_1")
)

# CREATE XML FILE
doc = newXMLDoc()
root = newXMLNode("rss", doc = doc)

# WRITE XML NODES AND DATA
channel = newXMLNode("channel", parent = root)
title = newXMLNode("title","Metrics", parent = channel)

for (i in 1:nrow(df)){
  prodNode = newXMLNode("item", parent = channel)
  
  # APPEND TO PRODUCT NODE
  newXMLNode("description", df$Labels[i], parent = prodNode)
  newXMLNode("metric", df$Values[i], parent = prodNode)
}

# OUTPUT XML CONTENT TO CONSOLE
print(doc)

# OUTPUT XML CONTENT TO FILE
saveXML(doc, file="RSS_Output.xml")
<?xml version="1.0"?>
<rss>
  <channel>
    <title>Metrics</title>
    <item>
      <description>Label_1</description>
      <metric>Value_1</metric>
    </item>
  </channel>
</rss>

问题未解决?试试使用:帮您解决问题。
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM