Nach unserem persönlichen austausch in Greifensee im märz (?) notierte ich mir folgendes:
«
It is not sufficient to use element.toString() - if child elements exist, then the whole element will be converted to a string. To get only the text of element itself, .text() must be added and then .toString()»
See JS Tools Guide, search for “.text(” ► XML object functions)
»
Kannst Du mir ein beispiel machen, wo das relevant ist? Bisher haben meine XML anwendungen - die lokalisierung meiner scripte - ohne probleme gearbeitet.
Das XML sieht zb so aus (A):
<UItxt>
<NumberOfArguments msg_01 = "Argument superflu(s) pour «%01» → le retirer." />
<NumberOfArguments msg_02 = "Nombre de arguments pas correcte pour la fonction «%01»." />
<NumberOfArguments msg_03 = "Au moins 1 argument requis pour fonction «%01»." />
<NumberOfArguments msg_04 = "Nombre d´arguments doit être encore pour la fonction «%01»." />
</UItxt>
Ich lese die daten mit folgender routine (relevantes snippet für Französischen text)
case Constants.FV_LANG_FRENCH: { // 0x05
KLD_F.UItxt = KLD_F.GetXMLdata (sLangFile + "_fr.xml");
sLangCode = "fr";
break;
}
KLD_F.UItxt ist ein globales object. Auf texte darin greife ich zb so zu
KLD_F.Message ("E", [b]KLD_F.UItxt.OpenDocument.@msg_01[/b], "OpenDocument", openReturnParams);
In einem anderen fall (

habe ich offenbar kind-elemente, denn hier brauche ich das angesprochene toString():
<saves>
<item>
<name>just to test the panel</name>
</item>
<item>
<name>01 TOC number convert spaces → TAB</name>
<info>TOC entries starting with arabic or roman numerals are handled</info>
<findtype>Text :</findtype>
<findstring>^([0-9]+|[IVXLCDM]+ ?\)?)</findstring>
<options searchMode="2" replMode="0" word="0" case="0" back="0" clone="0"/>
<replstring>$1\t</replstring>
</item>
</saves>
Das landet in einem anderen globalen objekt (KLD_F.xSettings)
xItem = KLD_F.xSettings.item[jItem];
sName = xItem.name.toString();
sFindType = xItem.findtype.toString();
► Ich habe nirgens ein
- wo wäre das nötig? Denn das zeugs funktioniert wie erwartet.