Ruby 如何将文件转换为Nokogiri::XML对象?

Ruby 如何将文件转换为Nokogiri::XML对象?,ruby,xml,nokogiri,Ruby,Xml,Nokogiri,我有一个示例XML文件(为了回答这个问题,我们称它为example.XML),希望将其转换为Nokogiri对象 根据文件和大量其他在线来源,这应该是可行的: xml = Nokogiri::XML(File.read("example.txt")) 但是xml.to_xml的值仅为: "<?xml version=\"1.0\"?>\n" 看起来您正在尝试解析无效的XML文档 可以通过删除XML声明中的空格来解决此问题: <?xml version="1.0" encod

我有一个示例XML文件(为了回答这个问题,我们称它为
example.XML
),希望将其转换为Nokogiri对象

根据文件和大量其他在线来源,这应该是可行的:

xml = Nokogiri::XML(File.read("example.txt"))
但是
xml.to_xml
的值仅为:

"<?xml version=\"1.0\"?>\n"

看起来您正在尝试解析无效的XML文档

可以通过删除XML声明中的空格来解决此问题:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Test>Test</Test>
</Document>
您还可以将Nokogiri配置为在出现解析错误时引发异常:

xml = Nokogiri::XML(File.read("example.txt")) do |config|
  config.strict
end
这两个案例都表明解析文档时存在问题

xml = Nokogiri::XML(File.read("example.txt"))
p xml.errors
# => [#<Nokogiri::XML::SyntaxError: xmlParsePI : no target name>, #<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>]
xml = Nokogiri::XML(File.read("example.txt")) do |config|
  config.strict
end