我有一个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,但对我来说,XML 生成的
doc = 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 是由其他原因引起的?如能就此事提供任何帮助,将不胜感激。
尝试使用 CSS 选择器。这也适用于 XML 文档:
doc.css('InitgPty').first
#should return the first element named InitgPty