xml parsing - XInclude का उपयोग करते हुए पार्सिंग करते समय "एक्सएमएल फाइल पार्स करने में त्रुटि"




xml-parsing jaxb (2)

मुझे सटीक एक ही समस्या थी दरअसल, href विशेषता को एक यूआरआई की उम्मीद है, जो हो सकता है:

  • या तो एक HTTP पता (जिसका अर्थ है कि आपका शामिल एक्सएमएल कहीं होस्ट किया जाना चाहिए)
  • या अपने स्थानीय मशीन पर एक फाइल। लेकिन उस मामले में, आपको इसे "फ़ाइल: ..." के साथ प्रीफ़िक्स करना होगा और पूर्ण पथ प्रदान करना होगा।

आपके उदाहरण के साथ:

<?xml version="1.0" encoding="UTF-8" ?>
<tag1  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xsi:schemaLocation="path-to-schema/schema.xsd">

    <xi:include href="file:absolute-path-to-xml-files/included.xml"/>
</tag1>

मैं JAXB के माध्यम से unmarshalled करने के लिए XInclude का उपयोग कर एक संयुक्त xml दस्तावेज़ बनाने की कोशिश कर रहा हूँ

यहां मेरा अनारिशलिंग कोड है:

@Override
public T readFromReader(final Reader reader) throws Exception {
    final Unmarshaller unmarshaller = createUnmarshaller();

    final SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setXIncludeAware(true);
    spf.setNamespaceAware(true);
    //spf.setValidating(true);

    final XMLReader xr = spf.newSAXParser().getXMLReader();

    final SAXSource source = new SAXSource( xr, new InputSource(reader) );

    try {
        final T object = (T) unmarshaller.unmarshal(source);
        postReadSetup(object);
        return  object;
    } catch (final Exception e) {
        throw new RuntimeException("Cannot parse XML: Additional information is attached. Please ensure your XML is valid.", e);
    }
}

यहां मेरी मुख्य XML फ़ाइल है:

<?xml version="1.0" encoding="UTF-8" ?>
<tag1  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xsi:schemaLocation="path-to-schema/schema.xsd">

    <xi:include href="path-to-xml-files/included.xml"></xi:include>
</tag1>

और शामिल। Xml:

<?xml version="1.0" encoding="UTF-8"?>
<tag2> Some text </tag2>

वास्तव में FileReader करने के लिए, मैं अपनी एक्सएमएल फ़ाइल (पथ से xml-files / main.xml - पथ सही है क्योंकि इसे स्पष्ट रूप से मुख्य फ़ाइल मिल सकता है) के साथ एक नया FileReader बना रहा है। जब मैं इसे चलाता हूँ, हालांकि, इसमें शामिल फ़ाइल में कुछ गड़बड़ है मुझे इस त्रुटि संदेश के साथ लिंक किए गए SAXParseException के साथ UnmarshalException प्राप्त हो रहा है: XML फ़ाइल को पार्स करने में त्रुटि (href = 'path-to-xml-files / include.xml')।

जब मैं मैन्युअल रूप से included.xml की सामग्री को मुख्य .xml में मर्ज करता हूं, तो यह कोई समस्या नहीं है।

मैं यह नहीं बता सकता कि क्या यह एक JAXB मुद्दा है या एक XInclude समस्या है, हालांकि मुझे बाद में संदेह है।

मैं क्या खो रहा हूँ?






xinclude