2015-02-11 4 views
0

У меня есть XML-файл test.xml хранится локально на моем C: \, которая принимает значение параметра студенческого билета следующимПроходя весь столбец XML

. 
. 
. 
<input-id>"student" 
     3392966 
     </input-id> 

У меня есть кадр данных в R, который содержит кучу студент ID значение

3392966 
    4064262 
    7319370 
    7115327 
    . 
    . 
    . 

Как я могу передать все значение студенческого билета, хранящееся в наборе данных в test.xml файл ввод-ид обрабатывать?

. 
. 
. 
<input-id>"student" 
     ....All student Id values from the StudentId column from dataframe Test 
     </input-id> 

ответ

0

Вот один из способов сделать это:

library("XML") 

# test data frame 
Test <- data.frame(StudentId = c(100, 200, 300)) 

# parse XML 
doc <- xmlParseDoc("test.xml") 

# find first <input-id> element 
ns <- getNodeSet(doc, "//input-id")[[1]] 

# adding dataframe column StudentId as new sub-elements 
kids <- lapply(Test$StudentId, function(x) newXMLNode("id", x)) 

addChildren(ns, kids = kids, append = FALSE) 

# save XML 
saveXML(doc, file = "test2.xml") 

В этом случае идентификаторы будут подэлементами элемента ввода-идентификатор. Если вы хотите добавить текстовые узлы xml, используйте newXMLTextNode вместо newXMLNode.

+0

Я пытаюсь заменить все текущие выходы между дескриптором ввода-вывода со значениями из 'Test $ StudentId'. Я попытался использовать параметр newXMLTextNode, и я получаю эту ошибку .... 'Ошибка в UseMethod (" addChildren "): не применимый метод для 'addChildren', примененный к объекту класса" c ('integer', 'numeric') " Вызывается из: FUN (X [[1L]], ...) 'при выполнении этой строки' lapply (Test $ StudentId, function (x) newXMLNode ("id", x)) '.. – Science11

+0

Работает на моей машине:) - я включил мою версию кадра данных теста в фрагмент кода. Может быть, есть некоторые отличия в наших вводах данных (откуда c (int, num)?) – bergant

+0

:-) он работает, если я вручную удалю все содержимое внутри элемента ' .... ' ... if элемент '' содержит некоторые идентификаторы уже тогда код не заменит по какой-либо причине – Science11

Смежные вопросы