[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