[Javalist] XML feldolgozás SAX parserrel newline hogyan?

Péter Böszörményi zmblevlist at gmail.com
2018. Jan. 3., Sze, 19:21:02 UTC


Nem lesz nagy segitseg, de ez a kod:

import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;

public class XmlSnadboxextends DefaultHandler {

        @Override public void characters(char[] ch,int start,int length)throws SAXException {
               System.out.println("["+new String(ch, start, length)+"]");
        }

        public static void main(String[] args)throws Exception {
               System.out.println(System.getProperty("java.version"));
               SAXParserFactory factory = SAXParserFactory.newInstance();
               SAXParser parser = factory.newSAXParser();
               System.out.println(parser.getClass());
               parser.parse(new File("a.xml"),new XmlSnadbox());
        }
}

ezzel az xml-el:

<root>
<bevezeto>Egy számítógépes kísérleti játék veszi kezdetét a következőkben.
         Játékpartnereid egy másik helyszínen foglalnak helyet, csak számítógépen és a játékszabályok szerint tudsz érintkezni velük.
         Kérjük, töltsd ki az alábbi adatokat, majd kattints a Start gombra, hogy elolvasd a játék ismertetőjét és a kezdő instrukciókat.
</bevezeto>
</root>

ezt a kimenetet produkalta:

1.8.0_151
class com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
[
]
[Egy számítógépes kísérleti játék veszi kezdetét a következőkben.]
[
         Játékpartnereid egy másik helyszínen foglalnak helyet, csak 
számítógépen és a játékszabályok szerint tudsz érintkezni velük.
         Kérjük, töltsd ki az alábbi adatokat, majd kattints a Start 
gombra, hogy elolvasd a játék ismertetőjét és a kezdő instrukciókat.]
[
]
[
]

Nekem megorzi a whitespaceket.

On 2018-01-03 19:54, zamek42 wrote:
> Sziasztok,
>
> Egy webes sw. vezérlését xml-ből szeretném megvalósítani, mert az 
> önellenőrző. Az xml-ben a felhasználó szövegeket akar elhelyezni, 
> amelyeket meg kell jelenítenem.
>
> Minden szép, de formázni is szeretné a szövegeket. Persze elég newline 
> és tab karakterekkel, tehát semmi extra. Gondoltam a sax parser majd 
> jól felolvassa és a textben a newline-okat becserélem <br/>-re a 
> tab-okat meg  -re és béke. Ami teljességgel érthetetlen, hogy 
> némelyik newline-t egyszerűen kihagyja a parser! Megnéztem, a 
> felolvasás közben a stringben _nincs_ benne a newline! A file-ban 
> persze ott van.
>
> Ilyenek vannak a file-ban:
>
> <bevezeto xml:space="preserve">Egy számítógépes kísérleti játék veszi 
> kezdetét a következőkben.
>         Játékpartnereid egy másik helyszínen foglalnak helyet, csak 
> számítógépen és a játékszabályok szerint tudsz érintkezni velük.
>         Kérjük, töltsd ki az alábbi adatokat, majd kattints a Start 
> gombra, hogy elolvasd a játék ismertetőjét és a kezdő instrukciókat.
> </bevezeto>
>
> Az első newline-t szépen behozza, de  a Kérjük előtt akármit csinálok 
> nincs newline, a pont után rögtön a Kérjük következik.
>
> Probáltam az xml:space-t is de ezt hibára hozza, az xsd-t én csináltam 
> hozzá, de a file elején igy próbáltam beállitani:
>
> <?xml version="1.0" encoding="utf-8" ?>
> <trustme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>          xmlns:xml="http://www.w3.org/XML/1998/namespace"
>          xsi:noNamespaceSchemaLocation="./trustme.xsd">
>
> A SaxParser-ről azt írja az Oracle, hogy be lehet állítani a 
> parser.setPreserveWhiteSpace(true)-val a kezelést 
> (http://www.oracle.com/technetwork/articles/wang-whitespace-092897.html)
>
> de a java8-ban kapott SaxParser-nek nincs ilyenje. 
> (SaxParserFactory-bol newSaxParser-rel állítom elő).
>
> Hogy kell rábírni a parser-t, hogy hagyja békén a newline-okat a 
> node-ok szövegeiben?
>

--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20180103/b7c65d27/attachment.html>


További információk a(z) Javalist levelezőlistáról