Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用真实HTML进行Scala XML解析(带有不匹配的标记)_Html_Xml_Scala - Fatal编程技术网

使用真实HTML进行Scala XML解析(带有不匹配的标记)

使用真实HTML进行Scala XML解析(带有不匹配的标记),html,xml,scala,Html,Xml,Scala,我的应用程序正在尝试将html文档嵌入到XML文档中 val xml = <document> <id> { getId } </id> <content> { getContent } </content> </document> val xml= {getId} {getContent} getId是一个返回新序列号的简单函数。 问题是关于getContent: def

我的应用程序正在尝试将html文档嵌入到XML文档中

val xml = 
  <document>
    <id> { getId } </id>
    <content> 
      { getContent }
    </content>
  </document>
val xml=
{getId}
{getContent}
getId是一个返回新序列号的简单函数。 问题是关于getContent:

def getContent = {
  val wrapped = "<wrap>"+article.content+"</wrap>"
  XML.loadString(wrapped).child
}
def getContent={
val wrapped=”“+文章内容+“”
loadString(wrapped).child
}
如您所见,article.content返回一个存储真实HTML文档的字符串。 Scala.xml.xml.loadString函数将把它解析为xml,并返回一个子元素列表,并正确地嵌入到xml val中

但是,当只有html有效时,例如,
Hello world

在一些文章中,它可能会出现:
helloworld
缺少
元素的结束标记。(是的,我不能责怪用户!)

在这种情况下,它将在此解析中引发异常并停止应用程序

有没有什么方法可以绕过验证,或者干脆将HTML作为字符串嵌入XML文档中而不进行解析

请解释一下这种情况。欢迎任何建议。

JSoup和TagSoup(以及其他)都适用于传递格式不好的XML的HTML


您必须决定哪个最适合您自己的用例。

您应该使用
html
解析器,而不是
xml
解析器。我更喜欢。您可以将html字符串解析为
scala
xml
如下:
new scala.xml.parsing.NoBindingFactoryAdapter().loadXML(源代码,new org.ccil.cowan.tagsoup.jaxp.saxfactorympl().newSAXParser())
对于tagsoup,下面的链接可供参考。