Hello again,

I've spent some time with the test class, and managed to get to the data I need.

I still don't have any idea how to use "config.getProperty("stringleadingtoproperty")" though.

And thus, I suspect I will be unable to use "config.setProperty("stringleadingtoproperty", "newproperty")"...

This is what I used to find the data I need:

***CODE***

public void testNestedArray()
    {
        String key = "SandwichFillings";

        Object array = config.getProperty(key);

        // root array
        assertNotNull("array not found", array);
ObjectAssert.assertInstanceOf("the array element is not parsed as a List", List.class, array);
        List list = config.getList(key);

        System.out.println(list.size());

        assertFalse("empty array", list.isEmpty());
        assertEquals("size", 1, list.size());

XMLPropertyListConfiguration o = (XMLPropertyListConfiguration) list.get(0);

        Iterator k = o.getKeys();

        while(k.hasNext()){

            key = (String) k.next();

            if(o.getProperty(key) instanceof String){
                System.out.println(o.getString(key));
            }
            System.out.println();
        }

    }

***/CODE***

Output is:

***OUTPUT***

1
self
html
Original
High
Default
SIDE TITLE
utf-8

***/OUTPUT***

When I saw that I almost cried, I was so happy.

So my question now is, what string would one use to access SIDETITLE directly?

It is in a Dictionary, which is in an Array - the property of SandwichFillings.

I've tried a few strings, but I don't really know the syntax, or what is possible so it's like stumbling around in the dark.

Could someone please let me know how I am able to 1) access this data, 2) change the value.

Thank you for your time and patience,

Mike

All animals are equal but some animals are more equal than others.
        -- George Orwell (1903 - 1950), "Animal Farm"

On 15/07/2008, at 7:40 AM, Oliver Heger wrote:

[EMAIL PROTECTED] schrieb:
Michael Robinson schrieb:
Hi,

I'm writing a program that must load, search, edit and save Mac OS X plist files.

I was attempting to use apple's NS* foundation classes, but I couldn't work out how to write to the plist files (maybe I'm just stupid).

I searched around the internet and was overjoyed to find apache.commons.configuration.

I've played with it for the past few days, trying to figure out how I'm meant to get data out of the plist files I'm working with.
Have you looked at the unit tests for the configuration project?
Commons projects generally have pretty good unit test coverage, which means that there is almost certainly an example of reading a plist file and extracting a value from it in there somewhere. In general, the unit tests for a project are a good source of examples when the explicit user examples and tutorials don't cover what you need to do. The unit tests can be fetched from the Apache subversion system using the url that is in the left-hand navigation bar.
Regards,
Simon

You can find the test class for XMLPropertyListConfiguration at [1]. It reads a test file [2] and evaluates the properties contained.

I assume your concrete problem is due to the fact that the value of the "SandwichFillings" key is an array, which obviously complicates things. Have a look at the testNestedArray() method in [1], which deals with nested arrays.

Querying the value of an array should result in a List. You can dump the content of this list to see how it is structured.

HTH
Oliver

[1] 
http://svn.apache.org/repos/asf/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java
[2] 
http://svn.apache.org/repos/asf/commons/proper/configuration/trunk/conf/test.plist.xml

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



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

Reply via email to