AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbrüche
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbrüche

Ein Thema von juergen · begonnen am 25. Aug 2020 · letzter Beitrag vom 26. Aug 2020
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbrüche

  Alt 25. Aug 2020, 21:47
Hallo zusammen,

in einem Projekt soll nun im Nachhinein(!) der Text mit Zeilenumbrüchen aus einer XML Datei ausgelesen werden, obwohl ich das vorher extra abgeklärt hatte.
So wie ich das sehe, müsste nach jedem
Code:
</span>
ein Zeilenumbruch erfolgen.
Das Programm liest über XPath die Daten in eine Nodelist ein und nimmt als Knoten in meinem Beispiel "DetailAddText".

Delphi-Quellcode:
            
IF ( x_NodeList_Item_DetailTxt.Nodes[i] <> NIL ) THEN
  BEGIN
    IF ( x_NodeList_Item_DetailTxt.Nodes[i].Text <> '' ) THEN
      BEGIN
        ls_Item_DetailTxt := x_NodeList_Item_DetailTxt.Nodes[i].Text;
      END;
  END;
Die XML hat z.B. folgenden Aufbau:

Code:
<DetailAddText>
   <p style="margin-top:0pt;margin-bottom:0pt;width:284pt;">
      <span style="font-size:10pt;font-family:Arial;">Das ist Text 1.</span>
   </p>
   <p style="margin-top:0pt;margin-bottom:0pt;width:284pt;">
      <span style="font-size:10pt;font-family:Arial;"/>
   </p>
   <p style="margin-top:0pt;margin-bottom:0pt;width:284pt;">
      <span style="font-size:10pt;font-family:Arial;">Das ist Text 2.</span>
   </p>
   <p style="margin-top:0pt;margin-bottom:0pt;width:284pt;">
      <span style="font-size:10pt;font-family:Arial;"/>
   </p>
   <p style="margin-top:0pt;margin-bottom:0pt;width:284pt;">
      <span style="font-size:10pt;font-family:Arial;">Das ist Text 3.</span>
   </p>
</DetailAddText>
Als Ergebnis kommt bei mir im Moment über XPath folgendes raus:

Code:
Das ist Text 1.Das ist Text 2.Das ist Text 3.
Gibt es eine (einfache) Möglichkeit das Auslesen über XPath im Nachhinein so anzupassen, dass nach jedem
Code:
</span>
ein Zeilenumbruch stattfindet?
Also das Ergebnis so ausschaut:
Code:
Das ist Text 1.
Das ist Text 2.
Das ist Text 3.
Falls es relevant ist: Ich nutze OXML.


Vielen Dank schon mal vorab für Hinweise!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Gyrospeter

Registriert seit: 11. Apr 2019
49 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 07:52
Ich kenne mich mit OXML nicht aus, allerdings weiß ich, dass es zb. im IXMLDocument oder TXMLDocument sowas wie [donodeautoindent] gibt. Vielleicht gibt es ja sowas auch bei dir?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#3

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 10:20
NodeAutoIndent hat nur was mit der Formatierung der XML zu tun, aber es verändert nicht den Inhalt,
da XML so wie HTML mehrfache Leerzeichen/Tabulatoren/Zeilenumbrüche ignoriert und als 1 Leerzeichen interpretiert,
also für die Formatierung hier vollkommen irrelevant.




Nach Span kommt kein Zeilenumbruch ... das ist eine Inline-Formatierung,
aber nach dem </P> müsste ein Zeilenumbruch neuer Absatz rein.

Ich weiß nicht ob man bei OmniXML was mit XSLT (XML Transform) machen kann.

Im Prinzip ist das eine Art Programmiersprache, der du dein neues Format "Absätze mit Zeilenumbruch" gibst und sagst "duppliziere und fülle das mit jenen Daten aus der XML".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Aug 2020 um 10:22 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 11:54
Bei allem in <p> ... </p> handelt es sich um einen Absatz.
Bei <span> ... </span> jedoch nicht.

Du muss also bei span keine Änderung vornehmen, sondern darfst die durch <p> vorgegebene Formatierung, hier einen Zeilenumbruch / Absatz, nicht ignorieren.

<span>
<p>
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 19:25
Danke schon mal für die Infos.
Dadurch dass ich über Xpath auf den Knoten "DetailAddText" gehe, bekomme ich ja nur den Text ohne die "Steuerzeichen".
Da suche ich eine Möglichkeit ohne Xpath mit seinem Knoten ändern zu müssen.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#6

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 19:34
Statt .Text mal .GetXML oder .NodeText versuchen.

Also nicht nur die enthaltenen "Texte", sondern das ganze XML. (wobei das hier drin eigentlich xml-konformes HTML ist)
Mit einer HTML-Komponente könntest du es dann direkt anzeigen, bzw. es gibt Funktionen zum Extrahieren von Text aus HTML, welches auch die Zeilenumbrüche beachtet.

Für XML ist <p> ja keine Textformatierung.

Oder du mußt eben dennoch nur den "Text" auslesen und die gewünschten Zeilenumbrüche einfügen oder einfügen lassen (XSLT).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Aug 2020 um 23:44 Uhr) Grund: schlechtschreibung
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr

  Alt 26. Aug 2020, 22:25
Danke himitsu!
Ich habe mir das jetzt angeschaut. Wenn ich x_NodeList_Item_DetailTxt.Nodes[i].XML nehme -wie von dir vorgeschlagen- dann habe ich den ganzen Kram inkl. der Steuerzeichen. Damit komme ich auf jeden Fall weiter.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz