如何阻止 Nokogiri 在解析时更改 XML



我正在解析Julius的XML输出:

<RECOGOUT SOURCEID="68">
  <SHYPO RANK="1" SCORE="223.648865">
    <WHYPO WORD="" CLASSID="<s>" PHONE="silB" CM="0.972"/>
    <WHYPO WORD="THE" CLASSID="THE" PHONE="dh iy" CM="0.640"/>
    <WHYPO WORD="ABOUT" CLASSID="ABOUT" PHONE="ah b aw t" CM="0.167"/>
    <WHYPO WORD="" CLASSID="</s>" PHONE="silE" CM="1.000"/>
  </SHYPO>
</RECOGOUT>

当我把它带到Nokogiri时,它被大量修改了。
puts Nokogiri::XML.parse(t)给:

<RECOGOUT SOURCEID="68">
  <SHYPO RANK="1" SCORE="223.648865">
    <WHYPO WORD="" CLASSID=""/><s>" PHONE="silB" CM="0.972"/&gt;
    <WHYPO WORD="THE" CLASSID="THE" PHONE="dh iy" CM="0.640"/>
    <WHYPO WORD="ABOUT" CLASSID="ABOUT" PHONE="ah b aw t" CM="0.167"/>
    <WHYPO WORD="" CLASSID=""/></s>" PHONE="silE" CM="1.000"/&gt;
  </SHYPO>
</RECOGOUT>

我知道当Nokogiri解析内容时,它会尝试对其进行修改以使其有效,但是我认为如果我将其解析为文档片段,puts Nokogiri::XML::DocumentFragment.parse(t)事情会有所改善,但我得到了相同的结果。解析为 HTML 也会导致修改。

为什么Nokogiri解析得如此奇怪,我能做些什么来获得所需的行为?或者,我应该提交错误报告吗?目前,我正在使用正则表达式(我知道...这是一个非常有限的情况),但我相信如果我可以使用 xPath 访问内容,我的代码会更容易阅读。

XML 无效的原因是用作属性的<s><s>。替换后,Nokogiri 会正确解析这些值。感谢@Wes的帮助。

相关内容

  • 没有找到相关文章

最新更新