Bond - James D. wrote:
Bond - James D. wrote:
Hopefully this is a simple one. I have a semi-non-standard xml file that has attributes in the Top-level element and I'm not able to set the attributes on it. How would I do that with XMLConfiguration? I tried the following but it didn't work:

xmlCfg.setProperty("[EMAIL PROTECTED]", ""+System.currentTimeMillis());
Hm, your code should work. I added the following unit test, which runs successful:

     /**
      * Tests setting an attribute on the root element.
      */
     public void testSetRootAttribute() throws ConfigurationException
     {
         conf.setProperty("[EMAIL PROTECTED]", "true");
         assertEquals("Root attribute not set", "true", conf
                 .getString("[EMAIL PROTECTED]"));
         conf.save(testSaveConf);
         XMLConfiguration checkConf = new XMLConfiguration();
         checkConf.setFile(testSaveConf);
         assertTrue("Attribute not found after save", checkConf
                 .containsKey("[EMAIL PROTECTED]"));
     }

(where conf is a XMLConfiguration). As you can see, I also only specify the attribute part of the key.

Can you double-check with this code? Or can you provide an example code fragment, which does not work?

Oliver

Ok, I can't get it to work ... here's my code:

String xmlTemplate = "c:\\temp\\ordermessage.xml";
String newXmlTemplate = "c:\\temp\\changedordermessage.xml";

XMLConfiguration xmlCfg = new XMLConfiguration(xmlTemplate);
xmlCfg.setValidating(false);
xmlCfg.setEncoding("UTF-8");
xmlCfg.setProperty("[EMAIL PROTECTED]", ""+System.currentTimeMillis());
xmlCfg.setProperty("[EMAIL PROTECTED]", new Date().toString());
FileWriter outter = new FileWriter(newXmlTemplate);
xmlCfg.save(outter);
outter.close();
xmlCfg.clear();

And here is the XML file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.008/cXML.dtd";>
<cXML payloadID="29066032971189013758490" timestamp="2007-09-12T09:34:16-05:00">
  <Header>
    <To>
      <Credential domain="testID">
        <Identity>12345</Identity>
      </Credential>
    </To>
  </Header>
</cXML>


After some further testing: you are right, there seems to be a bug! If the attribute already exists, a new value is not written. Can you open a ticket in jira [1], please?

Thanks.
Oliver

[1]
http://commons.apache.org/configuration/issue-tracking.html

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to