2013-09-16 2 views
0

Я пытаюсь включить файл xml -фрагмента в файл xml и получить доступ к parent.xml из java-кода.Не удается найти фрагмент xml

Java код выглядит следующим образом:

DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); 
dfactory.setNamespaceAware(true); 
dfactory.setXIncludeAware(true); 
dfactory.setFeature("http://apache.org/xml/features/xinclude/fixup-base-uris", false); 
DocumentBuilder builder = dfactory.newDocumentBuilder(); 
Document doc = builder.parse(new FileInputStream("C:/Users/admin/Desktop/parent.xml")); 

TransformerFactory tf = TransformerFactory.newInstance(); 
Transformer transformer = tf.newTransformer(); 
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
StringWriter writer = new StringWriter(); 

transformer.transform(new DOMSource(doc), new StreamResult(writer)); 

String xmlFile; 
xmlFile = writer.toString(); 
System.out.println(xmlFile); 

Файл parent.xml выглядит следующим образом:

<xi:include href="child.fragment" xmlns:xi="http://www.w3.org/2001/XInclude"> 
</xi:include> 

parent.xml и child.fragment находятся в том же месте C:/Users/admin/Desktop/ Но код Java может не найти child.fragment ..

У меня была следующая ошибка:

[Warning] Include operation failed, reverting to fallback. Resource error reading file as XML (href='child.fragment'). Reason: C:\Users\admin\Desktop\child.fragment (The system cannot find the file specified) 
[Fatal Error] An include with href 'child.fragment'failed, and no fallback element was found. 
Exception in thread "main" org.xml.sax.SAXParseException; An include with href 'child.fragment'failed, and no fallback element was found. 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
at MainClass.main(MainClass.java:30) 

ответ

0

Возможно, программа не найдена child.xml. Атрибут href, содержащий URL-адрес, указывающий на файл для включения. Если вы используете резервную копию, вы получите лучшую информацию об этой проблеме.

<xi:include href="child.fragment" xmlns:xi="http://www.w3.org/2001/XInclude"> 
<xi:fallback> 
    <para> 
     <emphasis>FIXME: MISSING XINCLUDE CONTENT</emphasis> 
    </para> 
    </xi:fallback> 
</xi:include> 

Если использование включает в себя ряд ограничений. Пожалуйста, проверьте this link.

Смежные вопросы