XML: use try/catch with XPath functions

This commit is contained in:
William Pitcock 2018-04-03 19:43:59 +00:00
parent bf953989cd
commit bf9d3d4aba
1 changed files with 12 additions and 6 deletions

View File

@ -4,14 +4,20 @@ defmodule Pleroma.Web.XML do
def string_from_xpath(_, :error), do: nil def string_from_xpath(_, :error), do: nil
def string_from_xpath(xpath, doc) do def string_from_xpath(xpath, doc) do
{:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) try do
{:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc)
res = res =
res res
|> to_string |> to_string
|> String.trim() |> String.trim()
if res == "", do: nil, else: res if res == "", do: nil, else: res
catch
e ->
Logger.debug("Couldn't find xpath #{xpath} in XML doc")
nil
end
end end
def parse_document(text) do def parse_document(text) do