diff --git a/lib/logstash/filters/xml.rb b/lib/logstash/filters/xml.rb index 80c7bfea46c..2702631c839 100644 --- a/lib/logstash/filters/xml.rb +++ b/lib/logstash/filters/xml.rb @@ -115,7 +115,7 @@ def filter(event) unless value.nil? matched = true event[xpath_dest] ||= [] - event[xpath_dest] << value.to_s + event[xpath_dest] << value.to_str end end # XPath.each end # @xpath.each diff --git a/spec/filters/xml.rb b/spec/filters/xml.rb index 44583348aca..bbfff94eee6 100644 --- a/spec/filters/xml.rb +++ b/spec/filters/xml.rb @@ -1,3 +1,4 @@ +# encoding: utf-8 require "test_utils" require "logstash/filters/xml" @@ -154,4 +155,22 @@ end end + describe "parse correctly non ascii content with xpath" do + config <<-CONFIG + filter { + xml { + source => "xmldata" + target => "data" + xpath => [ "/foo/key/text()", "xpath_field" ] + } + } + CONFIG + + # Single value + sample("xmldata" => 'Français') do + insist { subject["tags"] }.nil? + insist { subject["xpath_field"]} == ["Français"] + end + end + end