У меня возникли проблемы с уборкой искаженного XML-кода, который я получаю из базы данных SEC edgar .
По какой-то причине они ужасно сформировали xml.Теги, которые содержат любые строки, не закрываются, и они могут содержать другие документы XML или HTML внутри других тегов.Обычно у меня это было Tidy , но это не поддерживается.
Я пытался использовать Nokogiri :: XML :: SAX :: Parser, но это, кажется, душит, потому чтотеги не закрыты.Кажется, он работает нормально, пока не достигнет первого конечного тега, а затем больше не срабатывает.Но он выплевывает правильные символы.
class Filing < Nokogiri::XML::SAX::Document
def start_element name, attrs = []
puts "starting: #{name}"
end
def characters str
puts "chars: #{str}"
end
def end_element name
puts "ending: #{name}"
end
end
Кажется, что это был бы лучший вариант, потому что я могу просто проигнорировать другой документ XML или HTML.Кроме того, это имеет смысл, поскольку некоторые из этих документов могут стать достаточно большими, поэтому сохранение всей памяти в памяти, вероятно, не будет работать.
Вот несколько примеров файлов: 1 2 3
Я начинаю думать, что мне просто нужно написать свой собственный анализатор