使用Nokogiri解析后,URL会被更改

问题描述 投票:0回答:1
str = "<?xml version='1.0' encoding='utf-8'?><url>https://somehost?p1=v1&p2=v2</url>"
=> "<?xml version='1.0' encoding='utf-8'?><url>https://somehost?p1=v1&p2=v2</url>"

x = Nokogiri::XML(str)
=> #<Nokogiri::XML::Document:0x3fcaa893b900 name="document" children=[#<Nokogiri::XML::Element:0x3fcaa893b644 name="url" children=[#<Nokogiri::XML::Text:0x3fcaa893b48c "https://somehost?p1=v1=v2">]>]>

为什么删除'&p2'?解析后?

ruby xml parsing nokogiri
1个回答
3
投票

这是因为在XML / HTML上下文中,&具有特殊含义。你必须逃脱它:

<?xml version='1.0' encoding='utf-8'?><url>https://somehost?p1=v1&amp;p2=v2</url>

它正在解析为一个实体&p2,它不是一个有效的实体,所以它被删除,留给你p1=v1=p2

© www.soinside.com 2019 - 2024. All rights reserved.