我是 Ruby 和 nokogiri 的新手,我需要一些幫助。
我正在研究一組宏,這些宏將允許我獲取一個 XML 檔案,從我的索引軟體輸出,并將其決議為有效\index{}的命令以包含在 LaTeX 源檔案中。每個 XML<record>至少包含兩個<field>標簽,因此我將不得不遍歷多個<field>標簽來構建我的\index{}條目。
以下是 xml 檔案中的索引記錄的示例。
<record time="2022-08-27T17:25:12" id="30">
<field><text style="i"/><hide>SS </hide>Titanic<text/></field>
<field>passengers</field>
<field class="locator"><text style="b"/>5<text/></field>
</record>
我將以以下形式生成此記錄的中間輸出:
\index{Titanic@\textit{SS Titanic}!passengers|textbf} 5
(數字定位器用于將\index{}條目放置在 LaTex 檔案中的正確位置,不會包含在 LaTeX 源檔案中)
我正在使用 nokogiri 來操作 xml 檔案,并且已經能夠達到我回傳一個僅包含<field>每個標簽的節點串列的地步<record>,但是我需要能夠檢索 中的所有文本<field>,包括格式資訊(如果我text在 a 上使用該方法,例如<field>,它回傳“SS Titanic”,所有格式資訊都被剝離了)。
我被困在如何訪問<field>標簽中的整個文本字串上。一旦我明白了這一點,我就會很好地了解如何構建我的決議器。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
這有幫助嗎?
xml = "<record time="2022-08-27T17:25:12" id="30">
<field><text style="i"/><hide>SS </hide>Titanic<text/></field>
<field>passengers</field>
<field hljs-string">"><text style="b"/>5<text/></field>
</record>"
fields = Nokogiri::XML(xml).xpath(".//field")
puts fields.first.text #=> "SS Titanic"
puts fields.map(&:text) #=> ["SS Titanic", "passengers", "5"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503808.html
上一篇:如何減少字串中的數字?
