ruby – 使用Nokogiri创建XML节点
发布时间:2020-12-17 03:56:20 所属栏目:百科 来源:网络整理
导读:我在创建节点并将其添加到 XML文件时遇到问题: mainnode secnode data1/data2 data2/data2 /secnode/mainnode 我希望能够像这样添加到文件中: mainnode secnode data1/data2 data2/data2 /secnode secnode data1/data2 data2/data2 /secnode/mainnode 我无
|
我在创建节点并将其添加到
XML文件时遇到问题:
<mainnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
</mainnode>
我希望能够像这样添加到文件中: <mainnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
</mainnode>
我无法获得使用Nokogiri添加节点的概念. 这是我目前的代码: def openXML
f = File.open("file.xml")
doc = Nokogiri::XML(f)
end
def parseXML
mainnode.name = 'mainnode'
f = openXML
temp = Nokogiri::XML::Node.new "secnode",f
mainnode.add_next_sibling(temp)
end
我错过了哪些概念? 我需要能够将实例变量添加到< data1>和< data2>但我发现Nokogiri教程在这个领域没有多大帮助,并且没有通过添加< secnode>节点作为< mainnode>的子节点. 任何帮助表示赞赏. 解决方法
在Nokogiri中添加节点要比你想象的容易得多,但你的问题不是很清楚.
如果要复制现有节点: require 'nokogiri'
xml = <<EOT
<mainnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
</mainnode>
EOT
doc = Nokogiri::XML(xml)
secnode = doc.at('secnode')
doc.root.add_child secnode.dup
puts doc.to_xml
运行时会导致: <?xml version="1.0"?>
<mainnode>
<secnode>
<data1/>
<data2/>
</secnode>
<secnode>
<data1/>
<data2/>
</secnode></mainnode>
时髦的对齐是附加用于缩进的插入文本节点的结果.生成的XML有效. 如果您要添加一组不同的节点,它仍然很容易: 要求’nokogiri’ xml = <<EOT
<mainnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
</mainnode>
EOT
node_to_add = <<EOT
<secnode>
<data3 />
<data4 />
</secnode>
EOT
doc = Nokogiri::XML(xml)
doc.root.add_child node_to_add
puts doc.to_xml
哪个输出: <?xml version="1.0"?>
<mainnode>
<secnode>
<data1/>
<data2/>
</secnode>
<secnode>
<data3/>
<data4/>
</secnode>
</mainnode>
您可以将其用作模板: require 'nokogiri'
xml = <<EOT
<mainnode>
<secnode>
<data1></data2>
<data2></data2>
</secnode>
</mainnode>
EOT
v1 = 'foo'
v2 = 'bar'
node_to_add = <<EOT
<secnode>
<data3>#{ v1 }</data3>
<data4>#{ v2 }</data4>
</secnode>
EOT
doc = Nokogiri::XML(xml)
doc.root.add_child node_to_add
puts doc.to_xml
看起来像: <?xml version="1.0"?>
<mainnode>
<secnode>
<data1/>
<data2/>
</secnode>
<secnode>
<data3>foo</data3>
<data4>bar</data4>
</secnode>
</mainnode>
Nokogiri通过使用XML或HTML的字符串表示来创建要添加的节点非常容易,然后它可以即时转换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
