![]() |
Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbrüche
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:
ein Zeilenumbruch erfolgen.
</span>
Das Programm liest über XPath die Daten in eine Nodelist ein und nimmt als Knoten in meinem Beispiel "DetailAddText".
Delphi-Quellcode:
Die XML hat z.B. folgenden Aufbau: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;
Code:
Als Ergebnis kommt bei mir im Moment über XPath folgendes raus:
<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>
Code:
Gibt es eine (einfache) :roll: Möglichkeit das Auslesen über XPath im Nachhinein so anzupassen, dass nach jedem
Das ist Text 1.Das ist Text 2.Das ist Text 3.
Code:
ein Zeilenumbruch stattfindet?
</span>
Also das Ergebnis so ausschaut:
Code:
Falls es relevant ist: Ich nutze OXML.
Das ist Text 1.
Das ist Text 2. Das ist Text 3. Vielen Dank schon mal vorab für Hinweise! |
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
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?
|
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
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". |
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
|
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
Danke schon mal für die Infos.:-D
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. |
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
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). |
AW: Daten aus XML werden über XPath ausgelesen. Im Nachhinein nun aber mit Zeilenumbr
Danke himitsu! :thumb:
Ich habe mir das jetzt angeschaut. Wenn ich
Delphi-Quellcode:
nehme -wie von dir vorgeschlagen- dann habe ich den ganzen Kram inkl. der Steuerzeichen. Damit komme ich auf jeden Fall weiter.
x_NodeList_Item_DetailTxt.Nodes[i].XML
:dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz