2

RとXMLパッケージを使用してXMLファイルを読み取っています。XMLドキュメントを読み取り、いくつかの統計計算を実行し、結果を子ノードとしてXMLドキュメントに挿入し直してから、更新されたXMLファイルを新しい場所に保存することが私の望みです。

これが実例です。私が読んでいるXMLファイル(insert_node_error.xml):

<library>
    <book>
        <title>Book1</title>
        <author>AuthorA</author>
    </book>
    <book>
        <title>Book2</title>
        <author>AuthorB</author>
    </book>     
</library>

これが私が実行しているコードです:

#load file
file.name <- "xml\\insert_node_error.xml"
input.xml <- xmlInternalTreeParse(file.name)

#produce list of books in library (my actual code has loops and calcs here)
books.xml <- getNodeSet(input.xml, "//book")

#set price for first book as "price" node
price.xml <- xmlNode("price", 19.99)

#attempt to insert that price as child within the first book node
books.xml[[1]] <- addChildren(books.xml[[1]], price.xml)

出力はノードを追加しましたが、ノードからすべてのXMLを取り除き、テキストのみを提供しています。

> input.xml
<?xml version="1.0"?>
<library>
  <book><title>Book1</title><author>AuthorA</author>pricetext19.99</book>
  <book>
    <title>Book2</title>
    <author>AuthorB</author>
  </book>
</library>

を見たいのですが:

<library>
    <book>
        <title>Book1</title>
        <author>AuthorA</author>
    <price>19.99</price>
    </book>
    <book>
        <title>Book2</title>
        <author>AuthorB</author>
    </book>     
</library>

助言がありますか?

4

1 に答える 1

4

いつもちょっとした試行錯誤です。あなたの xmlNode は良さそうでした....

library(XML)
#load file
file.name <- "insert_node_error.xml"
input.xml <- xmlInternalTreeParse(file.name)

#produce list of books in library (my actual code has loops and calcs here)
books.xml <- getNodeSet(input.xml, "//book")

price.xml <- xmlNode("price", 19.99)

#set price for first book as "price" node
top = newXMLNode("price",19.99)

#attempt to insert that price as child within the first book node
books.xml[[1]] = addChildren(books.xml[[1]], top)
books.xml
于 2012-06-26T15:43:06.333 に答える