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,6 +4,7 @@ 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
try do
{:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) {:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc)
res = res =
@ -12,6 +13,11 @@ def string_from_xpath(xpath, doc) do
|> 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