草庐IT

nokogiri

全部标签

ruby - 如何使用 Nokogiri 和 Builder 不从父元素继承 namespace ?

首先-检查代码的火车残骸:xml['soapenv'].Body{xml.Request{xml.version("1.1"){xml.parent.namespace=xml.parent.namespace_definitions.first}xml.name(@admin_name.name){xml.parent.namespace=xml.parent.namespace_definitions.first}xml.source_version("1.0"){xml.parent.namespace=xml.parent.namespace_definitions.first

ruby - 如何在有前缀但没有 namespace 的节点上使用 xpath?

我有一个XML文件需要解析。我无法控制文件的格式,也无法更改它。该文件使用了一个前缀(称之为a),但它并未在任何地方为该前缀定义namespace。我似乎无法使用xpath来查询具有a命名空间的节点。这是xml文件的内容stuff0stuff1stuff2stuff3stuff4stuff5stuff6stuff7stuff8stuff9我正在使用Nokogiri查询文档:doc=Nokogiri::XML(open('text.xml'))things=doc.xpath('//a:thing')失败并给出以下错误:Nokogiri::XML::XPath::SyntaxError:

ruby - 如何使用 Nokogiri 使空标签自动关闭?

我在ERB中创建了一个XML模板。我在导出过程中用数据库中的数据填充它。在某些情况下,存在空值,在这种情况下元素可能为空,如下所示:在那种情况下,接收导出的客户端希望将其转换为自闭合标签:我正在尝试了解如何让Nokogiri执行此操作,但我还没有看到。有人知道如何使用Nokogiri使空的XML标签自动关闭吗?更新正则表达式足以完成我上面指定的操作,但客户现在还希望其子项全为空的标签能够自动关闭。所以这个:……也应该是我认为这需要使用Nokogiri。 最佳答案 搜索]+)>\s*并替换为在ruby中:result=subject.

ruby - 如何使用 Nokogiri Builder 添加评论

如何添加使用Nokogiri的生成器对XML进行评论?我想要这样的东西:我尝试这样的事情:Nokogiri::XML::Builder.newdo|xml|xml.root{xml.comment('blahblah')xml.child}end但这给了我:blahblah 最佳答案 您可以解决thisbugdocumentedfuturefeaturenotpresentinthecurrentrelease通过使用Builder#如下:require'nokogiri'xml=Nokogiri::XML::Builder.new

ruby - 使用 Nokogiri 按名称查找节点

尝试按名称查找节点。这是我的xml:Properties\CommonAssemblyInfo.csGlobal.asaxMyproject1MyProject2MyProject3这是我从上面的XML中获取所有名称节点的代码:f=File.open(projectpath)@doc=Nokogiri::XML(f)#printf.readnames=@doc.xpath("Name")printnamesf.close我的代码从XML搜索中一无所获。 最佳答案 您需要通配符路径构造(//),否则您只是查看根级别的元素。names=

ruby - 如何使用 Nokogiri 替换 XML 节点内容

我正在使用Ruby读取XML文档并使用新值更新单个节点(如果存在)。http://www.nokogiri.org/tutorials/modifying_an_html_xml_document.html对我来说如何更改节点数据并不明显,更不用说如何将它保存回文件了。defammend_parent_xml(folder,target_file,new_file)#openparentXMLfilethatcontainsfilereferenceget_xml_files=Dir.glob("#{@target_folder}/#{folder}/*.xml").sort.sele

ruby - 使用 SaxMachine 解析大文件似乎是将整个文件加载到内存中

我有一个1.6gb的xml文件,当我用SaxMachine解析它时,它似乎并没有流式传输或以block的形式吃掉文件——相反,它似乎正在将整个文件加载到内存中(或者可能有一个某处内存泄漏?)因为我的ruby​​进程向上攀升了2.5gb的ram。我不知道它在哪里停止增长,因为我的内存不足。在较小的文件(50mb)上,它似乎也在加载整个文件。我的任务遍历xml文件中的记录并将每条记录保存到数据库中。“空闲”大约需要30秒,然后数据库查询突然开始执行。我认为SAX应该允许您处理这样的大文件而无需将整个文件加载到内存中。有什么我忽略的地方吗?非常感谢更新以添加代码示例classFeedImpo

ruby - 选择相邻的兄弟元素而不插入非空白文本节点

给定的标记如下:foobarjimandthenjam我需要选择前三个——但不是最后一次。逻辑是“选择所有code元素,这些元素有一个preceding-or-following-sibling-element也是code,除非存在一个或多个包含非空白内容的文本节点他们之间。鉴于我正在使用Nokogiri(它使用libxml2),我只能使用XPath1.0表达式。虽然需要一个棘手的XPath表达式,但在Nokogiri文档上执行相同操作的Ruby代码/迭代也是可以接受的。注意CSSadjacentsiblingselector忽略非元素节点,因此选择nokodoc.css('code+

ruby - 使用 Nokogiri 构建空白 XML 标签?

我正在尝试使用Nokogiri构建XML文档。到目前为止一切都很标准;我的大部分代码看起来像这样:builder=Nokogiri::XML::Builder.newdo|xml|...xml.Tag1(object.attribute_1)xml.Tag2(object.attribute_2)xml.Tag3(object.attribute_3)xml.Tag4(nil)endbuilder.to_xml但是,这会导致像这样的标签而不是,这是我的最终用户指定的输出需要的内容。我如何告诉Nokogiri将完整的标签放在nil值周围? 最佳答案

ruby - 如何将 Nokogiri 与 Ruby 结合使用来替换现有 xml 中的值?

我正在使用带有最新Nokogirigem的Ruby1.9.3。我已经弄清楚如何使用xpath从xml中提取值并指定元素的路径(?)。这是我的XML文件:BlackMarkham34我使用这段代码来打印一个值:doc=Nokogiri::XML(File.open("C:\\myfile.xml"))putsdoc.xpath("//Ranch//Street")哪些输出:Markham一切正常,但我需要的是写入/替换值。我想使用相同类型的路径式查找来传递一个值来替换那里的值。所以我想将街道名称传递给此路径并覆盖那里的街道名称。我在互联网上到处都是,但只能找到创建新XML或在文件中插入全