Ich versuche, eine Eigenschaft in einer .plist-Datei mithilfe einer XPath-Schlüsselspezifikation hinzuzufügen/zu aktualisieren. Ich habe es mit einer Datei getestet, die so aussieht:
Code: Select all
testProp
text
54
2023-11-09T16:29:34Z
objectProp
text
54
2023-11-09T16:29:34Z
und ein XMLPropertyListConfiguration-Objekt, das wie folgt aufgebaut ist:
Code: Select all
File file = new File("path/to/config.plist");
XMLPropertyListConfiguration configuration =
new FileBasedConfigurationBuilder(XMLPropertyListConfiguration.class)
.configure(new Parameters().xml()
.setFile(file)
.setExpressionEngine(new XPathExpressionEngine()))
.getConfiguration();
// do any changes, then save the file using:
FileHandler handler = new FileHandler(configuration);
handler.save(file);
Mein Ziel: Bearbeiten Sie einen Wert in einer der Array-Eigenschaften oder fügen Sie einen neuen Wert in das Array ein. Ich hatte gedacht, dass die Konfiguration.setProperty("/testProp[2]", "a different string") zu Folgendem führen würde (einige Teile der Kürze halber gekürzt):
Code: Select all
testProp
text
a different string
2023-11-09T16:29:34Z
aber stattdessen wurde testProp[2] als eigene Eigenschaft hinzugefügt:
Code: Select all
testProp
text
54
2023-11-09T16:29:34Z
objectProp
text
54
2023-11-09T16:29:34Z
testProp[2]
a different string
Soweit ich weiß, verwenden Sie das Prädikat testProp[n], um die n-te Eigenschaft/den n-ten Wert von testProp anzugeben, aber das ist hier offensichtlich nicht der Fall. Gibt es etwas, das mir speziell bei Arrays fehlt? Oder müsste ich testProp als Liste lesen, die Liste ändern und dann die gesamte Liste wieder als testProp speichern? Die beste Lösung, nach der ich suche, ist etwas, das alle relevanten Informationen in die XPath-Zeichenfolge aufnehmen kann, aber wenn ich den Index im Array separat verarbeiten muss, kann das auch behandelt werden.