我正在尝试将xml片段文件包含在xml文件中并从java代码访问parent.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);
父文件.xml如下所示:
<xi:include href="child.fragment" xmlns:xi="http://www.w3.org/2001/XInclude">
</xi:include>
父.xml和子片段位于同一位置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:UsersadminDesktopchild.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)
可能是程序没有找到孩子.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>
如果使用包括有许多限制。请查看此链接。