使用R编辑或添加xml中的文本
我有一个很大的xml文档(超过3000行)。回溯:我的调查软件允许导出为xml文件。为了节省一些工作,我想自动将问题翻译成不同的语言(19!),然后将它们添加到这个xml中。在下面的例子中,有1个德语问题,翻译为英语和波斯语。我想要实现什么: 插入子对象 并将xml与新的子项一起保存使用R编辑或添加xml中的文本,r,xml,R,Xml,我有一个很大的xml文档(超过3000行)。回溯:我的调查软件允许导出为xml文件。为了节省一些工作,我想自动将问题翻译成不同的语言(19!),然后将它们添加到这个xml中。在下面的例子中,有1个德语问题,翻译为英语和波斯语。我想要实现什么: 插入子对象 并将xml与新的子项一起保存 <QUESTIONBLOCK PLACE="5" TARGETLAYER="0" RANDOMIZED="false" NAME="&qu
<QUESTIONBLOCK PLACE="5" TARGETLAYER="0" RANDOMIZED="false" NAME="" TUTOR="false">
<META KEY="KEEP_TOGETHER" VALUE="false"/>
<META KEY="METAKEY_ONLINE_QUESTION_SPACE" VALUE="DEFAULT"/>
<META KEY="METAKEY_VALIDATION_RULE" VALUE=""/>
<META KEY="METAKEY_TWO_COLUMN_PAPER" VALUE="false"/>
<EXPLANATION PLACE="1" NAME="[b]5. Seit wann wohnen Sie in Deutschland, Leipzig bzw. Ihrem
Wohngebiet? Bitte tragen Sie das Jahr ein." TUTOR="false">
<META KEY="METAKEY_ONLINE_QUESTION_SPACE" VALUE="DEFAULT"/>
<INTLVAL KEY="NAME">
<LANGENTRY LANG="en" VALUE="[b]5. Since when do you live in Germany, Leipzig or the residential area
you are living at the moment? Please enter the year. "/>
<LANGENTRY LANG="fa" VALUE="‌ـ از چه
زمانی تاکنون در
آلمان بترتیب در
لایپزیگ یا منطقه
مسکونی خود زندگی
می کنید؟"/>
</INTLVAL>
</EXPLANATION>
这就是我尝试过的:
xml\u find\u all(xml,xpath=“//LANGENTRY/@VALUE”)%%>%xml\u text()
但我不知道如何更改现有文本或添加新的子级
此外,我还必须找到问题。在示例中,它是问号块位置“5”。我想使用管道或循环来处理一个接一个的问题,并添加翻译。然后我可以将完成的XML导入到软件中
我希望这是清楚的;) 考虑一下,设计用于转换XML文件的专用语言,您可以在R到样式表之间传递参数(语言类型和翻译文本)进行转换。您可以使用XSLT
包(与xml2的姊妹)运行xslt1.0脚本。注意:XSLT是一种工业语言,因此可以移植到其他语言(Java、Python、PHP)中,并且这些语言都有参数接口
具体来说,运行模板以原样复制XML,然后在搜索原始文本后有条件地将参数绑定到INTLVAL
节点下的新LANGENTRY
节点
XSLT(另存为.xsl文件,一个特殊的.xml文件)
R(用循环演示)
库(xml2)
库(xslt)
#阅读XML和XSLT
doc我会这样做,但是HTML实体有一个问题,我不知道为什么要替换它们
library(xml2)
xml <- read_xml("waschi.xml")
x <- xml_new_root("LANGENTRY")
langentry <- xml_find_first(x, "//LANGENTRY")
xml_set_attr(langentry, "LANG", "ru")
xml_set_attr(langentry, "VALUE", "text text text")
intlval <- xml_find_first(xml, "//INTLVAL")
xml_add_child(intlval, langentry)
write_xml(xml, "waschi_new.xml")
库(xml2)
xml