我有一个xml文档,我想在名为'InitgPty'的元素下添加子元素,我试图按如下方式添加:
filename = "#{payment.updated_at.strftime("%Y%m%d")}.xml"
file_contents = File.read("#{filename}")
doc = Nokogiri::XML(file_contents)
initgpty = doc.at_xpath("//InitgPty")
first_id_tag = Nokogiri::XML::Node.new "Id", doc
initgpty.add_next_sibling(first_id_tag)
问题在于
initgpty = doc.at_xpath("//InitgPty")
返回nil所以我在.add_next_sibling上得到NoMethodError。这是我第一次使用XML和nokogiri,但对我来说,是
生成的XMLdoc = Nokogiri::XML(file_contents)
看起来很奇怪。以下是rails控制台中该行输出的片段:
#<Nokogiri::XML::Element:0x58d9582 name="InitgPty" namespace=#<Nokogiri::XML::Namespace:0x58ce1be href="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02"> children=[#<Nokogiri::XML::Text:0x58d92d0 "\n ">, #<Nokogiri::XML::Element:0x58d9212 name="Nm" namespace=#<Nokogiri::XML::Namespace:0x58ce1be href="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02"> children=[#<Nokogiri::XML::Text:0x58d8e84 "B8S Chatter Creators">]>, #<Nokogiri::XML::Text:0x58d8d12 "\n ">]>
这是否正确,NoMethodError是由其他原因造成的?在此问题上的任何帮助将不胜感激。
答案 0 :(得分:0)
尝试使用CSS选择器。这也适用于XML文档:
doc.css('InitgPty').first
#should return the first element named InitgPty