2014-11-20 3 views
0

В настоящее время я пытаюсь создать R-скрипт, чтобы я мог массово создавать xml-файлы. Файлы, которые я пытаюсь сделать, изменяются только в определенных областях, таких как SEED #, где я хочу, чтобы SEED # менялся в значение каждый раз.Создание файлов XML в R

Я также не знаю, как писать xml-файл в R. В пакете XML не было способа написать XML-файл из того, что я видел. Я попытался записать его как файл txt, но у меня возникли ошибки с символами <> и никакого вывода не было создано, как я могу написать его, чтобы ошибки не возникали?

Файл выглядит следующим образом: ALLCAPS - это части, которые я хочу изменить.

<modelThree> 
    <name>willamette</name> 
    <network load="true">willamette2</network> 
    <ocean>9313</ocean> 
    <firstNonOcean>2</firstNonOcean> 
    <species>SPECIESVECTOR</species> 
    <seed>SEED</seed> 
    <nyears>30</nyears> 
    <output>c:\users\rbrown09\SMURFrun\output\OUTPUTLOCATION</output> 
    <ProportionMove>0.25</ProportionMove> 
    <HSIperception>HSIPER</HSIperception> 
    <HSIimportance>1.0</HSIimportance> 
    <Beta>BETAVALUE</Beta> 
    <KMultiplier>0.9</KMultiplier> 
    <PdoMultipliers>1 1.054752174 1.109504348 1.164256522 1.219008696 1.27376087 1.328513043 1.383265217 1.438017391 1.492769565 1.547521739 1.602273913 1.657026087 1.711778261 1.766530435 1.821282609 1.876034783 1.930786957 1.98553913 2.040291304 2.095043478 2.149795652 2.204547826 2.2593 2.204547826 2.149795652 2.095043478 2.040291304 1.98553913 1.930786957 1.876034783 1.821282609 1.766530435 1.711778261 1.657026087 1.602273913 1.547521739 1.492769565 1.438017391 1.383265217 1.328513043 1.27376087 1.219008696 1.164256522 1.109504348 1.054752174</PdoMultipliers> 
    <PdoStartIndex>0</PdoStartIndex> 
    </modelThree> 
+0

Я хочу, чтобы иметь возможность генерировать этот код в файл XML и иметь соответствующие значения вставили в – RyanBrown

+0

В пакете XML есть много функций, помогающих в написании XML. Еще раз взглянем на 'ls (" package: XML ", all = TRUE)', в частности на '? XmlHashTree', чтобы начать –

+0

очень простой способ сделать это, просто прочитав строки с' readLines' и сделав необходимые изменено до его перезаписи. Также я думаю, что пакет XML должен иметь функцию saveXML – OganM

ответ

3

Вы можете использовать пакет XML. На практике я нахожу это очень медленным для создания узлов XML, особенно когда число узлов увеличивается. Один из вариантов Я предпочитаю использовать это whisker

'<modelThree> 
<name>willamette</name> 
<network load="true">willamette2</network> 
<ocean>9313</ocean> 
<firstNonOcean>2</firstNonOcean> 
<species>{{SPECIESVECTOR}}</species> 
<seed>{{SEED}}</seed> 
<nyears>30</nyears> 
<output>c:\users\rbrown09\{{SMURF}}run\output\{{OUTPUTLOCATION}}</output> 
<ProportionMove>0.25</ProportionMove> 
<HSIperception>{{HSIPER}}</HSIperception> 
<HSIimportance>1.0</HSIimportance> 
<Beta>{{BETAVALUE}}</Beta> 
<KMultiplier>0.9</KMultiplier> 
<PdoMultipliers>1 1.054752174 1.109504348 1.164256522 1.219008696 1.27376087 1.328513043 1.383265217 1.438017391 1.492769565 1.547521739 1.602273913 1.657026087 1.711778261 1.766530435 1.821282609 1.876034783 1.930786957 1.98553913 2.040291304 2.095043478 2.149795652 2.204547826 2.2593 2.204547826 2.149795652 2.095043478 2.040291304 1.98553913 1.930786957 1.876034783 1.821282609 1.766530435 1.711778261 1.657026087 1.602273913 1.547521739 1.492769565 1.438017391 1.383265217 1.328513043 1.27376087 1.219008696 1.164256522 1.109504348 1.054752174</PdoMultipliers> 
<PdoStartIndex>0</PdoStartIndex> 
</modelThree>' -> myTemplate 
library(whisker) 
myDF <- data.frame(
SPECIESVECTOR = paste("A", "B") 
, SEED = "ANOTHER" 
, SMURF = "PAPA" 
, OUTPUTLOCATION = "VILLAGE" 
, HSIPER = 78 
, BETAVALUE = 2) 
myXML <- whisker.render(myTemplate, myDF) 

Вы можете проверить вывод:.

library(XML) 
> xmlParse(myXML) 
<?xml version="1.0"?> 
<modelThree> 
    <name>willamette</name> 
    <network load="true">willamette2</network> 
    <ocean>9313</ocean> 
    <firstNonOcean>2</firstNonOcean> 
    <species>A B</species> 
    <seed>ANOTHER</seed> 
    <nyears>30</nyears> 
    <output>c:\users\rbrown09\PAPArun\output\VILLAGE</output> 
    <ProportionMove>0.25</ProportionMove> 
    <HSIperception>78</HSIperception> 
    <HSIimportance>1.0</HSIimportance> 
    <Beta>2</Beta> 
    <KMultiplier>0.9</KMultiplier> 
    <PdoMultipliers>1 1.054752174 1.109504348 1.164256522 1.219008696 1.27376087 1.328513043 1.383265217 1.438017391 1.492769565 1.547521739 1.602273913 1.657026087 1.711778261 1.766530435 1.821282609 1.876034783 1.930786957 1.98553913 2.040291304 2.095043478 2.149795652 2.204547826 2.2593 2.204547826 2.149795652 2.095043478 2.040291304 1.98553913 1.930786957 1.876034783 1.821282609 1.766530435 1.711778261 1.657026087 1.602273913 1.547521739 1.492769565 1.438017391 1.383265217 1.328513043 1.27376087 1.219008696 1.164256522 1.109504348 1.054752174</PdoMultipliers> 
    <PdoStartIndex>0</PdoStartIndex> 
</modelThree> 
Смежные вопросы