将 XML 从文件嵌入到 RMD

Embed XML from file into RMD

我有一个 XML 文件 (SOME.XML),我想将其内容嵌入到 .RMD 文档中。

如果我满足于让 XML 直接位于 .RMD 中,我知道我可以简单地做:

```xml
---some xml here---
```

到目前为止我的尴尬尝试是:

```{xml code=readr::read_file('SOME.XML')}
```

...由于没有 XML 引擎而失败。

我也试过:

````{r results='asis'}
cat('```xml')
cat(readr::read_file('SOME.XML'))
cat('```')
````

...其中,虽然编织完成,但输出完全不正确。

这可能吗?(毫无疑问,这里有一些我遗漏的技巧!)

如果需要,我 可以 有一个预编织阶段,在随后传递 [=] 的修改版本之前替换 XML 文件的内容16=] 到 rmarkdown::render。但是,如果可能的话,我想避免这种情况。


更新:

按照答案的建议使用 readLines 是在抱怨 ...incomplete final line found on 'SOME.XML'。使用 readr::read_file() 可以避免这种情况。对于我的特定项目,我现在使用:

```xml
`r readr::read_file("SOME.XML")`
```

感谢@user2554330 的优雅解决方案!

这是一种方法:

```xml
`r paste(readLines("SOME.XML"), collapse = "\n")`
```

想法是将 XML 放入内联 R 代码中。我认为 knitr 忽略了块包装器,因为它们不是它寻找的 {xml ... 格式,但它会看到内联代码并展开它。然后 Pandoc 将处理格式化。

以下是修改方法以使其发挥作用的方法:

````{r results='asis', echo = FALSE}
cat('```xml\n')
cat(readr::read_file('SOME.XML'), sep = "\n")
cat('\n```\n')
````