我正在尝试使用scala解析一些生成不良的xml代码,如下所示:
<contextfile concordance=brown>
<context filename=br-a01 paras=yes>
<p pnum=1>
<s snum=1>
<wf cmd=ignore pos=DT>The</wf>
</s>
</p>
...
结构良好,但正如您所看到的,任何attribube值都没有引号。使用下面的Scala片段简化打开文件会引发一个不那么令人惊讶的错误:
val semCor = XML.loadFile(args(0))
引发
org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}" associated with an element type "concordance".
我想知道如果可能的话,设置scala xml解析器以正确解析此输入,就好像有关于属性值的引号一样。
感谢您的任何建议!
答案 0 :(得分:6)
在Scala中无法将解析器配置到该范围。但是,由于您的XML格式错误,您可以使用HTML整齐的库(例如JSoup或TagSoup)来首先整理XML,然后使用Scala XML解析它。或者直接使用JSoup从XMl获取所需的数据。
答案 1 :(得分:2)
为什么将其称为XML?事实并非如此。您可以将Scala程序称为C#程序。没有任何XML解析器可以理解它。您使用完全专有的格式进行数据交换,您有两种选择:转而使用XML,或为其编写完全专有的解析器。
答案 2 :(得分:0)
无法配置解析器。您的解析器不会接受“格式不正确”的XML。也许你应该考虑第一遍来添加引号。在一般情况下,不可能知道如何处理这个问题,但在特定情况下它可能非常容易,例如,如果属性值不包含任何空格,引用,“&amp;”或“&lt;”字符。