2015-03-27 3 views
0

Я пытаюсь разобрать с помощью this schema, но я получаю следующее сообщение об ошибке:Ошибка загрузки XML-схема с Java

org.xml.sax.SAXParseException; systemId: http://www.khronos.org/files/collada_schema_1_4.xsd; lineNumber: 1; columnNumber: 50; White spaces are required between publicId and systemId. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) 
    ... 

Вот соответствующий раздел моего кода:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 

dbFactory.setValidating(true); 

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
URL schemaURL = new URL("http://www.khronos.org/files/collada_schema_1_4.xsd"); 
Schema schema = sf.newSchema(schemaURL); //Line causing error 
dbFactory.setSchema(schema); 

DocumentBuilder docBuilder = dbFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(file); 

doc.getDocumentElement().normalize(); 

This question говорит что между всеми xsi:schemaLocation s должны быть пробелы, но между ними уже есть пробелы. Некоторые из комментариев указывают, что это может быть проблемой с Eclipse, что, безусловно, возможно.

This question говорит, что это проблема с объявлением doctype, но я не знаю, где сопоставимый раздел кода находится в моем документе.

ответ

0

Сообщение об ошибке появляется, когда вы пытаетесь создать новый объект схемы из документа, URI которого равен http://www.khronos.org/files/collada_schema_1_4.xsd.

Кажется, есть хорошая вероятность, что данные, о которых сообщает сообщение об ошибке, являются данными, полученными из этого URI. Вы пытались разыменовать URI? Что ты получил?

То, что я получил, это 404 сопровождается страницы ошибок HTML, который начинается:

<!DOCTYPE html> 

Это не юридическое заявление типа XML документ, и, таким образом, не может быть началом юридического документа XSD схемы. Сообщение об ошибке не дает очень хорошего диагноза проблемы (это говорит о том, что вход имеет открытый идентификатор и системный идентификатор, но им не хватает разделительного пробела, когда основная проблема заключается в том, что ни один из них не присутствует) но исправление не связано с деталями сообщения об ошибке. Исправление состоит в том, чтобы найти правильный URI для документа схемы, который вы хотите загрузить: http://www.khronos.org/files/collada_schema_1_4 не http://www.khronos.org/files/collada_schema_1_4.xsd.

+0

Я не уверен, если он работает. Я получаю другую ошибку синтаксического анализа на 'docBuilder.parse (file)'. Если это не связано, я с радостью приму ваш ответ и задаю еще один вопрос. – FracturedRetina

+0

Любые указатели на то, как относиться к URI в Java? –