Responding to Laura Schmidt:
> On 01/25/2013 01:37 PM, Patrick Roemer wrote:
>
>> Du kannst die einzelnen Zeilen extrahieren, indem Du den via
>> #getTextContent() erhaltenen String mit trim/split auseinanderpflueckst.
>> Dann musst Du halt, wo/wie immer Du auch HTML generierst, dazwischen
>> br-Tags einfuegen.
>
> Ja, aber genau das ist problematisch, weil nicht nur anstelle der
> <br>-Tags ein "\n" eingef锟絞t wird, sondern auch an vielen anderen
> Stellen, je nachdem, wo im Quell-XML Newlines sind.
Wie Heiner bereits schrieb: Wenn nur die Umbrueche zu Beginn und Ende
des Textausschnitts das Problem sind, koennen die per #trim() entfernt
werden-
> NodeList lst = node.getChildNodes();
>
> for (int i = 0;i < lst.getLength();i++)
> {
> Node n = lst.item(i);
>
> if (n.getNodeName() == "br")
> ...
>
> So k锟絤e ich an die beabsichtigten Newlines. Und wie k锟絤e ich an den Text
> dazwischen?
if(n.getNodeType() == Node.TEXT_NODE) {
// ...
}
>> (Bzw. koenntest Du dann im Prinzip auch abwaegen, ob nicht
>> ggfs. eine XML-Transformation bequemer waere, als alles per Java-API aus
>> dem DOM rauszupfriemeln.)
>>
>> BTW, XPath koennte auch angenehmer sein, als das DOM explizit zu
>> traversieren.
>
> Klingt gut. H锟絫test Du ein Code-Schnipsel?
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression synExp = xpath.compile("//Group/Synopsis");
NodeList synResult =
(NodeList)synExp.evaluate(rootNode, XPathConstants.NODESET);
XPathExpression txtExp = xpath.compile("break|child::text()");
// ueber synResult iterieren und txtExp auf jeder Node evaluieren,
// dann wiederum ueber dieses Ergebnis iterieren und je nachdem,
// ob es TEXT_NODE oder <break/> ist, behandeln.
Keine Ahnung, ob das fuer Deinen Anwendungsfall wirklich bequemer ist.
Und ich bin mir nicht 100% sicher, dass bei dem "|" garantiert ist, dass
die Nodes in ihrer Ursprungsreihenfolge rauskommen - muesste man noch
mal nachschlagen.
Was XSLT/Transformer angeht, muesstest Du selber mal nachgooglen, da
habe ich nix parat.
Auf jeden Fall ist XML-Verarbeitung mit der Java-Standard-API mit viel
Boilerplatetipperei verbunden. Wenn man das oefter machen will, tut man
sicher gut daran, fruehzeitig Drittbibliotheken anzuschauen oder sich
eigene kleine Wrapper-APIs zu schreiben, um die Schmerzen etwas zu mildern.
Viele Gruesse,
Patrick