Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Elixir中的XML格式是否正确_Xml_Elixir_Well Formed - Fatal编程技术网

如何检查Elixir中的XML格式是否正确

如何检查Elixir中的XML格式是否正确,xml,elixir,well-formed,Xml,Elixir,Well Formed,我收到的XML文件可能格式不正确,在这种情况下,我需要忽略它们 我使用的是包装xmerl的SweetXml 我有一个格式错误的XML示例,它在两个属性之间没有空格 没有格式良好的函数-一个具有简单布尔响应的函数就好了 Xmerl试图解析该文件,但不喜欢它,因此发送一个出口 我还没有了解到有关主管的情况,但在我看来,这似乎是他们的一个案例 有没有新手或者简单的方法来处理退出信号 defmodule XmlIsWellFormed.WellFormed do def is_well_formed

我收到的XML文件可能格式不正确,在这种情况下,我需要忽略它们

我使用的是包装xmerl的SweetXml

我有一个格式错误的XML示例,它在两个属性之间没有空格

没有格式良好的函数-一个具有简单布尔响应的函数就好了

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,它只截获异常。另一方面,可以通过以下方式拦截出口:

IEX将向控制台打印退出消息,但程序将继续执行:

iex> XmlIsWellFormed.WellFormed.is_well_formed ~s(<a b=""c=""/>)
3437- fatal: {whitespace_required_between_attributes}
false

iex> XmlIsWellFormed.WellFormed.is_well_formed ~s(<a b="" c=""/>)
true
然而,捕捉和拯救异常在长生不老药中是非常罕见的。您应该使用一个监督树来设计您的应用程序,以便它知道如何正确地自我更新。然后你就可以了,主管会处理剩下的事情。

你使用了try/rescue,它只截获异常。另一方面,可以通过以下方式拦截出口:

IEX将向控制台打印退出消息,但程序将继续执行:

iex> XmlIsWellFormed.WellFormed.is_well_formed ~s(<a b=""c=""/>)
3437- fatal: {whitespace_required_between_attributes}
false

iex> XmlIsWellFormed.WellFormed.is_well_formed ~s(<a b="" c=""/>)
true

然而,捕捉和拯救异常在长生不老药中是非常罕见的。您应该使用一个监督树来设计您的应用程序,以便它知道如何正确地自我更新。然后你就可以了,主管会处理剩下的事情。

也许我在这里遗漏了什么,但是你评论的尝试/救援代码有什么问题?也许我在这里遗漏了什么,但是你评论的尝试/救援代码有什么问题?谢谢。我确信我已经用暴力强迫了所有的组合——我现在很困惑我错过了什么。我认为主管是正确的方法,但这是我第一周的长生不老药,我认为这应该是第二周的材料。还有|>到|串|>-当然!谢谢我确信我已经用暴力强迫了所有的组合——我现在很困惑我错过了什么。我认为主管是正确的方法,但这是我第一周的长生不老药,我认为这应该是第二周的材料。还有|>到|串|>-当然!