我收到的XML文件可能不完整,在這種情況下,我需要忽略它們。如何檢查XML是否在Elixir中格式正確
我正在使用包裝xmerl的SweetXml。
我有兩個屬性之間沒有空格的示例格式錯誤的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
也許我在這裏錯過了一些東西,但是您評論過的嘗試/救援代碼有什麼問題? – 2014-11-05 00:43:24