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

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

我正在尝试使用 R 的 XML 包创建 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")

这给了我以下输出,它不适用于 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>