에 대한 Google 검색의 세 번째 히트이었다, BTW http://xml.apache.org/commons/components/resolver/resolver-article.html
를 살펴 보자. 이상적으로 그것은 물론, 리졸버를 사용하는 유일한 방법은 SAX 파서가 사용하는 핸들러에서 카탈로그 분석기에 해상도를 위임하는 메소드를 어떻게 든 추가하는 것입니다. 이미 SAX 파서를 사용하는 경우
, 그건 꽤 쉽게 :
final CatalogResolver catalogResolver = new CatalogResolver();
DefaultHandler handler = new DefaultHandler() {
public InputSource resolveEntity (String publicId, String systemId) {
return catalogResolver.resolveEntity(publicId, systemId);
}
public void startElement(String namespaceURI, String lname, String qname,
Attributes attrs) {
// the stuff you'd normally do
}
...
};
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser saxParser = factory.newSAXParser();
String url = args.length == 0 ? "http://horstmann.com/index.html" : args[0];
saxParser.parse(new URL(url).openStream(), handler);
을 그렇지 않으면, 당신이 당신의 자신의 엔티티 리 조르바를 제공 할 수 있는지 여부를 파악해야합니다. javax.xml.parsers.DocumentBuilder를 사용하면됩니다. scala.xml.XML 객체로, 당신은하지만 당신은 속임수 사용할 수 없습니다 : 나는 그 기사를 보았던
val res = new com.sun.org.apache.xml.internal.resolver.tools.CatalogResolver
val loader = new factory.XMLLoader[Elem] {
override def adapter = new parsing.NoBindingFactoryAdapter() {
override def resolveEntity(publicId: String, systemId: String) = {
res.resolveEntity(publicId, systemId)
}
}
}
val doc = loader.load(new URL("http://horstmann.com/index.html"))enter code here
을하고 난 이미 내 프로젝트에 XML-해결을 통합하려고 시도했습니다. 문제는 xml.catalog.files 시스템 등록 정보가 JAXP 판독기 인스턴스의 엔티티 확인자로 XML 리졸버를 설치 한 후에 만 영향을줍니다. 내 문제는 웹 서비스 라이브러리에 의해 내부적으로 사용되는 JAXP 리더 인스턴스에 대한 액세스 권한이 없다는 것입니다. –
프로그램을 시작할 때 명령 줄에서 해당 속성을 설정하면 파서 팩토리에서 "보았"지 않습니다? –