Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.

Adobe® Technology Partner

  • Home
  • Add-Ons
    • XSentials
      • XSentialsConfigurator
      • InsertWizzard
      • VariableWizzard
      • FormatWizzard
      • FormatReference
      • FormatInspector
      • DocumentAdministrator
      • TableColumnReSizer
      • PgfCompare
      • VersionFreezer
      • GraphicsPalette
    • XBlocks
      • XBlocksConfigurator
      • FolderCreator
      • VariantCreator
      • TranslationExport
      • TranslationReImport
    • XTras
    • XApps
    • Kostenlose Skripte
    • Roadmap
  • Downloads
  • Hilfe
    • Grundsätzliches
    • Installation
    • Settings und Menü
    • XSentials
      • XSentialsConfigurator
      • InsertWizzard
      • FormatWizzard
      • VariableWizzard
      • FormatReference
      • DocumentAdministrator
      • TableColumnReSizer
      • FindReplace
      • GraphicsPalette
      • RulingFormatWizzard
    • XBlocks
      • XBlocksConfigurator
      • FolderCreator
      • TranslationExport
      • TranslationReImport
      • VariantCreator
    • Fairies
  • Forum
  • Einloggen
  • Kontakt
  • Index
  • Aktuell
  • Suche
  • Index
  • Aktuell
  • Suche
  1. Forum
  2. Foren
  3. Programmieren mit ExtendScript
  4. XML mit ExtendScript
  5. Einlesen von XML daten
× Das Arbeiten mit XML und xpath in ExtendScript

Topic-icon Einlesen von XML daten

  • Start
  • Zurück
  • 1
  • Weiter
  • Ende
  • 1

  • kDaube
  • kDaubes Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
Weniger Mehr
  • Beiträge: 17
  • Dank erhalten: 1
01 Mai 2023 18:06 #218 von kDaube
Einlesen von XML daten wurde erstellt von kDaube
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 (B) 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
toText()
- wo wäre das nötig? Denn das zeugs funktioniert wie erwartet.
  • kDaube
  • kDaubes Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
Weniger Mehr
  • Beiträge: 17
  • Dank erhalten: 1
11 Mai 2023 12:00 - 11 Mai 2023 12:04 #219 von kDaube
kDaube antwortete auf Einlesen von XML daten
Ich galube, das habe ich falsch verstanden. XML Object Reference imJS Tools Guide sagt:
xmlObj.text();
Retrieves text nodes from this element.
Returns an XML object containing all properties of this object that represent XML text nodes.

Mit folgendem XML file
<test>
  <child>
    <item> this is the item of the first element </item>
    <item> this is the second item </item>
    <item> this is the third item </item>
  </child>
</test>
bekomme ich mit einem test script:
var sXmlFile, xSettings;
  sXmlFile = "E:/_DDDprojects/FM-JsxLib/TestFiles,Pgms/Test-text-elment.xml";
  xSettings = KLD_Z.GetXMLdata (sXmlFile);

$.writeln (typeof xSettings.child.item[1] + " «" + xSettings.child.item[1] + "»");
// xml « this is the second item »

$.writeln (typeof xSettings.child.item[1].text() + " «" + xSettings.child.item[1].text() + "»");
// xml « this is the second item »

$.writeln (typeof xSettings.child.item[1].text().toString() + " «" + xSettings.child.item[1].text().toString() + "»");
// string « this is the second item »

$.writeln (typeof xSettings.child.item.text() + " «" + xSettings.child.item.text() + "»");
// xml « this is the item of the first element  this is the second item  this is the third item »
Der letzte kommentar zeigt, dass die funktion text() - wie es die beschreibung sagt - alle kind-elemente aneinander hängt.

Das brauche ich aber gar nie... Und das folgende ist ja auch nicht sehr vernünftiger grbaruch:
$.writeln (typeof xSettings.child.text().toString() + " «" + xSettings.child.text().toString() + "»");
// string «»
Letzte Änderung: 11 Mai 2023 12:04 von kDaube.
  • 4x_scripts
  • 4x_scriptss Avatar
  • Offline
  • Administrator
  • Administrator
Weniger Mehr
  • Beiträge: 10
  • Dank erhalten: 0
11 Mai 2023 12:17 #220 von 4x_scripts
4x_scripts antwortete auf Einlesen von XML daten
Hallo Klaus,

entschuldige bitte die lange Wartezeit, aber ich habe gesundheitsbedingt eine Auszeit genommen.

Ich habe Dir auch etwas vorbereitet:
var myXML = 
    <Book>
        <Author>Goethe</Author>
        <Author>Schiller</Author>
        <Author>Mann</Author>
    </Book>

var myXML2Advanced = 
    <Book>
        <Author>Goethe
            <Werk published="1">Faust</Werk>
            <Werk>Faust 2</Werk>
        </Author>
        <Author>Schiller</Author>
        <Author>Mann</Author>
    </Book>



$.writeln("  --- " + " myXML.Author[0].toString() " + "  --- ");
$.writeln(myXML.Author[0].toString());

$.writeln("\n  --- " + " myXML2Advanced.Author[0].toString() " + "  --- ");
$.writeln(myXML2Advanced.Author[0].toString());

// Zugriff nur auf den Textknoten mit .text()
$.writeln("\n  --- " + " myXML2Advanced.Author[0].text().toString() " + "  --- ");
$.writeln(myXML2Advanced.Author[0].text().toString());

var Attribute = myXML2Advanced.Author[0].Werk[0].@published;

$.writeln("typeof Element >>" + typeof myXML2Advanced.Author[0]);
$.writeln(myXML.Author[0] == "Goethe");
$.writeln(myXML.Author[0] === "Goethe");

$.writeln("typeof toString() >> " + typeof myXML2Advanced.Author[0].toString());

// Attribute
$.writeln("\n --- Attribute ---");
$.writeln("typeof Attribut >> " + typeof myXML2Advanced.Author[0].Werk[0].@published);

$.writeln(myXML2Advanced.Author[0].Werk[0].@published == "1");  // true
$.writeln(myXML2Advanced.Author[0].Werk[0].@published.toString() === "1");  // true
$.writeln(myXML2Advanced.Author[0].Werk[0].@published === "1");  // false

Das zeigt den Unterschiede zwischen Textknoten(text node) und den sonstigen Elementinhalten.
  • kDaube
  • kDaubes Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
Weniger Mehr
  • Beiträge: 17
  • Dank erhalten: 1
11 Mai 2023 17:47 #221 von kDaube
kDaube antwortete auf Einlesen von XML daten
Siehe auch www.daube.ch/docu/files/FMjsxLib.pdf seiten 177-179.
  • Start
  • Zurück
  • 1
  • Weiter
  • Ende
  • 1
  1. Forum
  2. Foren
  3. Programmieren mit ExtendScript
  4. XML mit ExtendScript
  5. Einlesen von XML daten
Powered by Kunena Forum
  • Startseite
  • Forum
  • Foren
  • Programmieren mit ExtendScript
  • XML mit ExtendScript
  • Einlesen von XML daten
  • Impressum
  • Datenschutz
Copyright © 4xscripts-exi 2023 All rights reserved. Custom Design by Youjoomla.com
Forum