我对libxml-ruby有疑问 有一个xml文件“sample.xml”。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://***" xmlns:r="http://???">
<sheetData>
<row><v>1</v></row>
</sheetData>
</worksheet>
我想处理节点而不指定默认命名空间,如下所示。
xml = XML::Document.file('sample.xml')
sheet_data = xml.find_first('sheetData')
当然,我可以像下面这样做。
NS = {
main: 'http://***',
r: 'http://???',
}
sheet_data = xml.find_first('main:sheetData', NS)
但是我想省略默认命名空间的字符串 我尝试了一些属性和方法属于XML :: Namespace [s],但没有受到影响。
我保存xml文件时还有一个问题。
ns = XML::Namespace.new(xml.root, 'main', 'http://***')
row = XML::Node.new('row', nil, ns)
sheet_data << row
xml.save("sample.xml")
发布如下。
<row><v>1</v></row>
<main:row/>
我希望它的省略字符串“main:”。 所以我这样做,但它真的很难看。
open('sample.xml', 'wb') do |f|
f.write(xml.to_s.gsub(/(<\/?)main:/, '\1'))
end
你有什么好主意吗?