예! 적어도 가능합니다. 당신이 상대 URI가있는 경우 그 생각
val doc = loadXml(
source = new FileReader("data/example.xml"),
parsers = XIncludeSAXParserFactoryPool.parsers
)
참고 :
import javax.xml.parsers.{ SAXParser, SAXParserFactory }
import scales.utils._, ScalesUtils._
import scales.xml._, ScalesXml._
import scales.xml.parser.sax.DefaultSaxSupport
object XIncludeSAXParserFactoryPool extends
resources.SimpleUnboundedPool[SAXParserFactory] { pool =>
def create = {
val parserFactory = SAXParserFactory.newInstance()
parserFactory.setNamespaceAware(true)
parserFactory.setFeature("http://xml.org/sax/features/namespaces", true)
parserFactory.setXIncludeAware(true)
parserFactory.setValidating(false)
parserFactory
}
val parsers = new resources.Loaner[SAXParser] with DefaultSaxSupport {
def loan[X](tThunk: SAXParser => X): X =
pool.loan(x => tThunk(x.newSAXParser))
}
}
그런 다음 당신은 당신의 loadXml
호출 파서 풀을 지정할 수 있습니다 : 당신은 제공 DefaultSAXParserFactoryPool
의 모델에 자신의 SAXParserFactory
풀을 쓸 수 있습니다 include
href
이 문서의 위치 (현재 디렉토리가 아닌)에 비례하여 평가되기를 원하면 InputSource
이 시스템 ID를 가져야합니다. 이를 수행하는 한 가지 방법은 다음과 같습니다.
import java.io.File
import org.xml.sax.InputSource
loadXml(
source = new InputSource(new File("data/example.xml").toUri.toString),
parsers = XIncludeSAXParserFactoryPool.parsers
)
위의 모든 작업은 0.5.0과 0.6.0에서 작동합니다.
이 문제를 해결할 수있는 더 좋은 방법이 있다면, 나는 그것을 듣고 싶습니다.