Hi Aaron,

thanks for sharing this!

Oliver

Am 17.05.2016 um 16:34 schrieb Aaron Gadberry:
> Hi,
> 
> To answer my own question, the document builder I was using was not
> namespace or xinclude aware.  Acquiring a document builder manually and
> setting a custom document builder on the XMLConfiguration allowed XInclude
> to function as intended.
> 
> Here is the updated and functional code and output.
> 
> package test;
> 
> import java.io.File;
> 
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.ParserConfigurationException;
> 
> import org.apache.commons.configuration2.ConfigurationUtils;
> import org.apache.commons.configuration2.XMLConfiguration;
> import
> org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
> import org.apache.commons.configuration2.builder.fluent.Parameters;
> import org.apache.commons.configuration2.ex.ConfigurationException;
> 
> public class TestConfiguration {
> public static void main(String[] args) throws ConfigurationException {
> try {
> DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
> dbf.setXIncludeAware(true);
> dbf.setNamespaceAware(true);
> DocumentBuilder db = dbf.newDocumentBuilder();
> Parameters params = new Parameters();
> FileBasedConfigurationBuilder<XMLConfiguration> builder = new
> FileBasedConfigurationBuilder<XMLConfiguration>(
> XMLConfiguration.class);
> builder.configure(params.xml()
> .setFile(new File("configs/test_external.xml"))
> .setDocumentBuilder(db));
> XMLConfiguration config = builder.getConfiguration();
> System.out.println(ConfigurationUtils.toString(config));
> } catch (ParserConfigurationException e) {
> e.printStackTrace();
> }
> 
> }
> }
> 
> 
> New Output:
> 
> [@xmlns:xi]=http://www.w3.org/2001/XInclude
> ExternalElements.InternalRoot[@xml:base]=test_internal.xml
> ExternalElements.InternalRoot.InternalElement[@name]=[1, 2, 3]
> 
> 
> Thanks!
> 
> 
> On Tue, May 17, 2016 at 8:06 AM, Aaron Gadberry <aa...@gadberry.com> wrote:
> 
>> Hi,  My question is specifically on commons-configuration2.
>>
>> I cannot seem to use XInclude within an XMLConfiguration file.  Perhaps I
>> am doing something incorrectly, or perhaps it is unsupported, but I can't
>> seem to find documentation either way.
>>
>> This is my example program, files and output.
>>
>> TestConfiguration.java
>>
>> package test;
>>
>> import java.io.File;
>>
>> import org.apache.commons.configuration2.ConfigurationUtils;
>> import org.apache.commons.configuration2.XMLConfiguration;
>> import
>> org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
>> import org.apache.commons.configuration2.builder.fluent.Parameters;
>> import org.apache.commons.configuration2.ex.ConfigurationException;
>>
>> public class TestConfiguration {
>>     public static void main(String[] args) throws ConfigurationException {
>>         Parameters params = new Parameters();
>>         FileBasedConfigurationBuilder<XMLConfiguration> builder = new
>> FileBasedConfigurationBuilder<XMLConfiguration>(
>>                 XMLConfiguration.class);
>>         builder.configure(params.fileBased().setFile(
>>                 new File("configs/test_external.xml")));
>>         XMLConfiguration config = builder.getConfiguration();
>>         System.out.println(ConfigurationUtils.toString(config));
>>     }
>> }
>>
>>
>> configs/test_external.xml
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <ExternalRoot>
>>     <ExternalElements>
>>         <xi:include xmlns:xi="http://www.w3.org/2001/XInclude";
>>             href="configs/test_internal.xml" />
>>     </ExternalElements>
>> </ExternalRoot>
>>
>>
>> configs/test_internal.xml
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <InternalRoot>
>>     <InternalElement name="1" />
>>     <InternalElement name="2" />
>>     <InternalElement name="3" />
>> </InternalRoot>
>>
>>
>> Result:
>>
>> ExternalElements.xi:include[@xmlns:xi]=http://www.w3.org/2001/XInclude
>> ExternalElements.xi:include[@href]=configs/test_internal.xml
>>
>>
>> Expected Result:
>>
>> ExternalElements.InternalRoot.InternalElement[@name]=1,2,3
>>
>>
>> Any help is appreciated!
>>
>> Thanks,
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to