Nokogiri删除xml编码

时间:2015-03-13 01:13:20

标签: ruby nokogiri

我正在使用nokogiri解码一些xml。这个xml确实有一些html作为值。解析时我发现了一些奇怪的行为。看来nokogiri正在删除一些html编码标签,所以当我解析html时我无法正确解码它。见下面的例子:

doc = Nokogiri::XML '<?xml version="1.0"?><manifest 
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" 
identifier="Manifest-eaf97d26-aa83-4399-8e9b-ae9f6f5fc6a2" 
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" 
xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" 
xmlns:imsqti="http://www.imsglobal.org/xsd/imsqti_v2p1">
<imsmd:langstring>&lt;p&gt;&#xd; These are the&lt;strong&gt;instructions&lt;/strong&gt; for the pool&lt;/p&gt;</imsmd:langstring>'

这会产生以下值:

"<?xml version=\"1.0\"?>\n<manifest xmlns=\"http://www.imsglobal.org/xsd/imscp_v1p1\" xmlns:imsmd=\"http://www.imsglobal.org/xsd/imsmd_v1p2\" xmlns:imsqti=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"Manifest-eaf97d26-aa83-4399-8e9b-ae9f6f5fc6a2\">\n<imsmd:langstring>p&#xD; These are thestrong instructions/strong for the pool/p</imsmd:langstring></manifest>\n"

注意&lt; &GT;标签丢失了。但是,以下工作正如预期的那样。

doc = Nokogiri::XML '<?xml version="1.0"?><imsmd:langstring>&lt;p&gt;&#xd; These are the&lt;strong&gt; instructions&lt;/strong&gt; for the pool&lt;/p&gt;</imsmd:langstring>'

并给出以下结果

"<?xml version=\"1.0\"?>\n<imsmd:langstring>&lt;p&gt;&#xD; These are the&lt;strong&gt; instructions&lt;/strong&gt; for the pool&lt;/p&gt;</imsmd:langstring>\n"

我确信我错过了一些东西,但无法弄清楚造成这种情况的原因。

0 个答案:

没有答案