Я получаю файлы XML, которые могут быть не корректными, и в этом случае мне нужно их игнорировать.Как проверить правильность формирования XML в Elixir
Я использую SweetXml, который обертывает xmerl.
У меня есть пример плохо сформированного XML, который не имеет пробела между двумя атрибутами.
Нет функции is_well_formed - одна с простым булевым ответом была бы замечательной.
Xmerl пытается проанализировать файл, ему не нравится, и поэтому отправляет выход.
Я еще не узнал о супервизорах, но это выглядит как случай для них.
Есть ли новобранец или простой способ обращения с этим сигналом выхода?
defmodule XmlIsWellFormed.WellFormed do
def is_well_formed(xml) do
import SweetXml
xml_string = to_string xml
result = xml_string |> parse # parse sends exit.
# FYI - SweetXml.parse :
# def parse(doc) do
# {parsed_doc, _} = :xmerl_scan.string(doc)
# parsed_doc
# end
# Note: inspecting result is no use because xmerl sends an exit with:
# "whitespace_required_between_attributes"
# Something like this would be handy:
# try do
# result = :xmerl_scan.string(xml)
# rescue
# :exit, _ -> nil
# end
end
end
rubbish_xml = '<rubbishml><html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml"></rubbishml>'
XmlIsWellFormed.WellFormed.is_well_formed rubbish_xml
Возможно, мне что-то не хватает, но что случилось с вашим прокомментированным кодом try/rescue? –