我想在使用Scala解析xml文件时偶尔忽略dtd规范.我知道这可以通过java接口很容易地完成
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何使用Scala的xml库轻松完成此操作.如果可能的话,我想继续使用scala xml库,因为它明显更好.
提前致谢!
Dan*_*ral 11
这对我有用,但它取决于XML解析器的实现.
import scala.xml.Elem
import scala.xml.factory.XMLLoader
import javax.xml.parsers.SAXParser
object MyXML extends XMLLoader[Elem] {
override def parser: SAXParser = {
val f = javax.xml.parsers.SAXParserFactory.newInstance()
f.setNamespaceAware(false)
f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
f.newSAXParser()
}
}
Run Code Online (Sandbox Code Playgroud)
另见这个问题,这是你的问题,但是以敌对的方式措辞.