ruby – 使用Nokogiri创建带有命名空间的XML元素
发布时间:2020-12-17 03:58:45 所属栏目:百科 来源:网络整理
导读:我使用Nokogiri来创建 XML.我想要有以下结构: content:encodetext/content 我试过这段代码: xml.content['encoded'] {xml.text "text"} 但它给了我一个错误. 我该怎么写得正确?类似的例子是在Referencing declared namespaces. 解决方法 你的榜样没有意义
我使用Nokogiri来创建
XML.我想要有以下结构:
<content:encode>text</content> 我试过这段代码: xml.content['encoded'] {xml.text "text"} 但它给了我一个错误. 我该怎么写得正确?类似的例子是在Referencing declared namespaces. 解决方法
>你的榜样没有意义;你说你想要“编码”,然后你尝试写“编码”.
>您的示例没有意义,因为它不是有效的XML.您有一个带有命名空间内容的开始编码标记,然后您尝试使用内容标记关闭它.您想要< content:encode> text< / content:encode>或者你想< encode:content> text< / encode:content>. (你想要哪一个?) >您没有按照您提供的链接中的示例进行操作.如果您想要一个带有命名空间编码的内容元素,那么根据您应该编写的示例: xml['encoded'].content{ xml.text "text" } >但是,根据示例,您还必须声明要引用的任何名称空间.这样做: require 'nokogiri' builder = Nokogiri::XML::Builder.new do |xml| xml.root('xmlns:encoded' => 'bar') do xml['encoded'].content{ xml.text "text" } end end puts builder.to_xml #=> <?xml version="1.0"?> #=> <root xmlns:encoded="bar"> #=> <encoded:content>text</encoded:content> #=> </root> 编辑:如果你真的只需要一个没有root的单个元素,使用Nokogiri就是矫枉过正.做就是了: str = "Hello World" xml = "<encoded:content>#{str}</encoded:content>" puts xml #=> <encoded:content>Hello World</encoded:content> 如果你真的需要使用Nokogiri,但只想要第一个子根元素,那么: xml_str = builder.doc.root.children.first.to_s #=> "<encoded:content>text</encoded:content>" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |