【发布时间】:2013-12-12 21:32:46
【问题描述】:
我正在尝试更改一个 indl 文件。 indl 文件是 Adobe Indesign 为保持文档结构而创建的文件,基本上是 XML。我想使用 Nokogiri 查找一些选定的 XML 节点并用我的文本替换文本,然后将 xml 保存到另一个文件。
XML 当然很奇怪:我找到了一些文档来检索带有 Nokogiri 更改文本的 HTML 标记,但我不知道如何管理这样的一段 XML:
<cflo>
<txsr prst="o_u5084" crst="o_u5085" trak="D_10">
<pcnt>c_tEST</pcnt>
</txsr>
<txsr prst="o_u5086" crst="o_u5c" trak="D_20">
<pcnt>c_Titolo titolo titolo</pcnt>
</txsr>
<cflo>
基本上我需要寻找prst和crst属性的组合并替换pcnt节点内的内容。
我试试这个
@doc.xpath("//txsr[prst='o_u5086' and crst='o_u5085']")
但我不知道如何更改 pcnt 节点内的文本。
【问题讨论】:
-
amolnpujari.wordpress.com/2012/03/31/reading_huge_xml-rb 我还发现 ox 在读取大型 xml 时比 nokogiri 快 5 倍。另外,我编写了一个包装器,它只允许您使用 ox 搜索大型 xml,允许您使用指定的元素进行迭代。 gist.github.com/amolpujari/5966431
-
您的 XML 无效,因为没有结束标记。这是在实际 XML 中吗?这可能会混淆解析器,使它们返回无效结果。
标签: ruby xml xml-parsing nokogiri