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的字符串表示来创建要添加的节点非常容易,然后它可以即时转换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |