Jakarta Configuration Question

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Jakarta Configuration Question

debussy007
Hi,

in an XML file, I have the following type of records :

<startlist>
  <start parse="true" index="true">http://intranet.lu.anonyme1.bank</start>
  <start parse="true" index="true">http://intranet.lu.anonyme2.bank</start>
</startlist>

I want to delete all the start elements, and add new start elements.
I try this :


            FileConfiguration writer = new XMLConfiguration(path);
            writer.setAutoSave(true);

            writer.clearProperty("startlist.start");


But I have then the following :

<startlist>
  <start index="true" parse="true"/>
  <start index="true" parse="true"/>
</startlist>

As u can see the elemnt is still there, it just deleted the content.

How can I delete the elements totally?
Thank u.
Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

Oliver Heger-3
Thomas Thomas wrote:

> Hi,
>
> in an XML file, I have the following type of records :
>
> <startlist>
>  <start parse="true" index="true">http://intranet.lu.anonyme1.bank</start>
>  <start parse="true" index="true">http://intranet.lu.anonyme2.bank</start>
> </startlist>
>
> I want to delete all the start elements, and add new start elements.
> I try this :
>
>
>            FileConfiguration writer = new XMLConfiguration(path);
>            writer.setAutoSave(true);
>
>            writer.clearProperty("startlist.start");
>
>
> But I have then the following :
>
> <startlist>
>  <start index="true" parse="true"/>
>  <start index="true" parse="true"/>
> </startlist>
>
> As u can see the elemnt is still there, it just deleted the content.
>
> How can I delete the elements totally?
> Thank u.
>

The clearProperty() method only removes the direct value of the
specified key, which in your case is the text value of the <start>
element; the attributes remain.

For removing complete sub trees (i.e. everything below the start
element, including its attributes and further sub elements)
HierarchicalConfiguration has the clearTree() method. If you cast your
configuration to a HierarchicalConfiguration object, you can try this
method.

HTH
Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

debussy007
Thanks for the support Oliver,
however, when I do clearTree(), the "startlist" tag disapear...

I want that :

<startlist>
  <start parse="true" index="true">http://intranet.lu.anonyme1.bank </start>
  <start parse="true" index="true">http://intranet.lu.anonyme2.bank</start>
</startlist>

To become that :

<startlist>
</startlist>

Actually I do this because I need to put new "start" tags in the "startlist"
tag ...
Sounds very basic but I can't achieve it ...
Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

Oliver Heger-3
Thomas Thomas wrote:

> Thanks for the support Oliver,
> however, when I do clearTree(), the "startlist" tag disapear...
>
> I want that :
>
> <startlist>
>  <start parse="true" index="true">http://intranet.lu.anonyme1.bank </start>
>  <start parse="true" index="true">http://intranet.lu.anonyme2.bank</start>
> </startlist>
>
> To become that :
>
> <startlist>
> </startlist>
>
> Actually I do this because I need to put new "start" tags in the
> "startlist"
> tag ...
> Sounds very basic but I can't achieve it ...
>
Hm, interesting side effect of clearTree(). I guess that parent nodes,
which become empty by the clearTree() operation are automatically removed.

Whatever, is this really a problem that the <startlist> tag is removed?
You can still add new <start> tags by calling
addProperty("startlist.start", "a value");

Then the whole structure will be generated. More information about
adding properties to a hierarchical configuration can be found in the
user guide [1].

HTH
Oliver

[1]
http://jakarta.apache.org/commons/configuration/howto_xml.html#Adding_new_properties

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

debussy007
Thanks Oliver,
I will try that,
I need also to put attributes in an tag "start", which I must create.
I need to add a property "start",
but How do I create attributes with values in it ?
Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

Oliver Heger-3
Thomas Thomas wrote:
> Thanks Oliver,
> I will try that,
> I need also to put attributes in an tag "start", which I must create.
> I need to add a property "start",
> but How do I create attributes with values in it ?
>

The syntax is something like
config.addProperty("startlist.start[@parse]", Boolean.TRUE);

Again the user guide contains detailed information.

Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

debussy007
Thank u Oliver,
just wanted to know if it was possible before to read the whole doc ;-)
I will carefully read the userguide.
Thank u for your precious support !
Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

debussy007
Oliver,
I could perfectly add elements and attributes how I want,
But I have a problem that I can't solve with the doc.

The "startlist" tag (included in the root tag) was below the proxy "tag",
and when I do this :

            ((HierarchicalConfiguration)writer).clearTree("startlist");

            Iterator it = collection.getDirectoriesToParse();
            while (it.hasNext()) {
                writer.addProperty("startlist(-1).start(-1)",
(String)it.next());
                writer.addProperty("startlist.start[@parse]", Boolean.TRUE);
                writer.addProperty("startlist.start[@index]", Boolean.TRUE);
            }

It adds the startlist as last element of the root tag.

It lost its position.
Do u have any idea on how to fix this ?

Thank u for any help.
Reply | Threaded
Open this post in threaded view
|

Re: Jakarta Configuration Question

Oliver Heger-3
Thomas Thomas wrote:

> Oliver,
> I could perfectly add elements and attributes how I want,
> But I have a problem that I can't solve with the doc.
>
> The "startlist" tag (included in the root tag) was below the proxy "tag",
> and when I do this :
>
>            ((HierarchicalConfiguration)writer).clearTree("startlist");
>
>            Iterator it = collection.getDirectoriesToParse();
>            while (it.hasNext()) {
>                writer.addProperty("startlist(-1).start(-1)",
> (String)it.next());
>                writer.addProperty("startlist.start[@parse]", Boolean.TRUE);
>                writer.addProperty("startlist.start[@index]", Boolean.TRUE);
>            }
>
> It adds the startlist as last element of the root tag.
>
> It lost its position.
> Do u have any idea on how to fix this ?
>
> Thank u for any help.
>

Okay, this is a hard one.

I think, what you can do is to override the values of the start elements
instead of removing them and then adding them again. This can be done
with the setProperty() method. With

int cnt = ((HierarchicalConfiguration)
writer).getMaxIndex("startlist.start");

you can determine, how many <start> elements exist. Then in a loop you
can do:


for (int i = 0; it.hasNext() && i < cnt; i++) {
                writer.setProperty("startlist.start(" + i + ")",
(String)it.next());
                writer.setProperty("startlist.start(" + i + ")[@parse]",
Boolean.TRUE);
                writer.setProperty("startlist.start(" + i + ")[@index]",
Boolean.TRUE);
            }

If more elements have to be added then the file did contain before, the
remaining ones can be added in the usual way (as in your code above). If
some elements are no longer needed, they can be removed with clearTree()
specifying the exact index (as in the setProperty() calls above).

Hope that helps. The configuration API gives you only a limited control
over the order of the properties.

Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]