Nokogiri xpath query with text containing "&"

Hi all,

I am trying to run some xpath queries on a XML file. But it seems
nokogiri can not handle texts containing & values.

here is an example, second line prints nothing. if i change & to
something else in both xml and xpath expression, i get the values i
expect.

How can i query xpath expressions with XML excapes.

file_xml = Nokogiri::XML File.open(file_configurable)
print
file_xml.xpath("//Match[text()='value1&value2']/../Value").text.to_s

thanks everyone.

···

--
Posted via http://www.ruby-forum.com/.

Hi all,

I am trying to run some xpath queries on a XML file. But it seems
nokogiri can not handle texts containing & values.

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

here is an example, second line prints nothing. if i change & to
something else in both xml and xpath expression, i get the values i
expect.

How can i query xpath expressions with XML excapes.

file_xml = Nokogiri::XML File.open(file_configurable)
print
file_xml.xpath("//Match[text()='value1&value2']/../Value").text.to_s

We would need to see your input but I guess it's something like this:

irb(main):001:0> xml = "<a>foo&amp;bar</a>"
=> "<a>foo&amp;bar</a>"
irb(main):002:0> dom = Nokogiri.XML(xml)
=> #<Nokogiri::XML::Document:0x..fc0107cf6 name="document"
children=[#<Nokogiri::XML::Element:0x..fc0107b34 name="a"
children=[#<Nokogiri::XML::Text:0x..fc010795e "foo&bar">]>]>
irb(main):003:0> dom.xpath '//a[text()="foo&bar"]'
=> [#<Nokogiri::XML::Element:0x..fc0107b34 name="a"
children=[#<Nokogiri::XML::Text:0x..fc010795e "foo&bar">]>]

You tried

irb(main):004:0> dom.xpath '//a[text()="foo&amp;bar"]'
=>

That does not work because the "&amp;" only exists in the external
representation of the XML (the file). The XML Entity is parsed and
the document contains the literal "&":

irb(main):005:0> dom.root.text.to_s
=> "foo&bar"
irb(main):006:0> dom.root.text
=> "foo&bar"

Kind regards

robert

···

On Tue, Aug 28, 2012 at 1:04 PM, Mert <lists@ruby-forum.com> wrote:

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

Thank you very for your encouragement. I hope you have an understanding
of everything.

We would need to see your input but I guess it's something like this:

#!/usr/bin/env ruby

require 'nokogiri'

someXML = <<HERE
<values>
    <value>value&amp;value2</value>
</values>
HERE

file_xml = Nokogiri::XML someXML
print file_xml.xpath("//value[text()='value&amp;value2']").text.to_s

···

--
Posted via http://www.ruby-forum.com/\.

Mert wrote in post #1073558:

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

Thank you very much for your encouragement. I hope you have an
understanding of everything.
Thank you for the answer

Question not the capabilities of Nokogiri or ye shall be judged! :slight_smile:

···

--
Posted via http://www.ruby-forum.com/\.

You're right. That was a bit rude. I apologize.

Now, back to the factual: I hope you did not stop reading at that
line. Is your question answered?

Kind regards

robert

···

On Tue, Aug 28, 2012 at 1:41 PM, Mert <lists@ruby-forum.com> wrote:

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

Thank you very for your encouragement. I hope you have an understanding
of everything.

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Joel Pearson wrote in post #1073566:

Mert wrote in post #1073558:

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

Thank you very much for your encouragement. I hope you have an
understanding of everything.
Thank you for the answer

Question not the capabilities of Nokogiri or ye shall be judged! :slight_smile:

What are you judging? Such a cruel forum.

···

--
Posted via http://www.ruby-forum.com/\.

Robert Klemme wrote in post #1073576:

···

On Tue, Aug 28, 2012 at 1:41 PM, Mert <lists@ruby-forum.com> wrote:

That's not true. The issue is with your understanding (or lack
thereof) of XML Entities. See below.

Thank you very for your encouragement. I hope you have an understanding
of everything.

You're right. That was a bit rude. I apologize.

Now, back to the factual: I hope you did not stop reading at that
line. Is your question answered?

Kind regards

robert

Thank you for the apology. Honestly i could not focus on the rest of it.
I made a mistake, and asked a question without any wrong intension. I
would be happy in the afternoon if someone could delete this post.

--
Posted via http://www.ruby-forum.com/\.

Mert wrote in post #1073568:

What are you judging? Such a cruel forum.

That was a joke. And now stop whining, please.

···

--
Posted via http://www.ruby-forum.com/\.

Robert Klemme wrote in post #1073576:

Now, back to the factual: I hope you did not stop reading at that
line. Is your question answered?

Thank you for the apology. Honestly i could not focus on the rest of it.
I made a mistake, and asked a question without any wrong intension.

I am not sure I understand. You asked a perfectly legal question.
Now, is your question answered?

I would be happy in the afternoon if someone could delete this post.

That's not possible on a mailing list.

Cheers

robert

···

On Tue, Aug 28, 2012 at 3:31 PM, Mert <lists@ruby-forum.com> wrote:

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/