xml getElementById come funziona?

Creare una macro - Scrivere uno script - Usare le API
Rispondi
nickGiard
Messaggi: 83
Iscritto il: lunedì 14 maggio 2012, 22:04

xml getElementById come funziona?

Messaggio da nickGiard »

Il bello di LibreOffice è che ha tante librerie API con services potenti ed utili ai più svariati scopi.
Il brutto di LibreOffice è che la documentazione delle stesse (sdk) è veramente scarna e addetta soprattutto a chi le cose le conosce già, e manca assolutamente di esempi significativi, questo sconforta ed allontana chi vuole avvicinarsi e cimentarsi nel creare macro od applicativi.
Veniamo ad un esempio, il modulo xml è sicuramente interessante, se voglio scrivere qualcosa che sia gestibile ad albero, come un manuale a capitoli e sottocapitoli, mi sembra la soluzione ideale.
Prendiamo un semplice file xml che contiene degli ID univoci :

Codice: Seleziona tutto

<?xml version="1.0" encoding="UTF-8"?>
<Root ID="0">
	<Elem ID="A" Txt="Capitolo A"></Elem>
	<Elem ID="B" Txt="Capitolo B"></Elem>
</Root>
Lo carico nel DOM :

Codice: Seleziona tutto

Dim oDocB : oDocB = CreateUnoService("com.sun.star.xml.dom.DocumentBuilder")
Dim xDoc : xDoc = oDocB.parseURI(sXmlPath) ' percorso del file xml
Ora vorrei recuperare l'elemento il cui ID="B", e vedo che l'interfaccia xDocument ha il metodo getElementById(string elementId), quindi

Codice: Seleziona tutto

Dim MyElem : MyElem  = xDoc.getElementById("B")
Purtroppo questo non funziona, penso che ovviamente in qualche punto bisogna dire che il mio ID è una key di un qualche dictionary, ma nonostante varie ricerche non sono stato in grado di trovare niente, ovviamente men che meno nella documentazione delle API.
Qualcuno ha due righe di codice funzionante ??
Grazie e un saluto a tutti gli amanti del coding
Nicola con LibreOffice 7.1 (x64) su Windows 11