[Javalist] XML feldolgozás SAX parserrel newline hogyan?
Péter Böszörményi
zmblevlist at gmail.com
2018. Jan. 4., Cs, 08:44:50 UTC
Meg a sax parser implementacio is erdekes lehet.
On 2018-01-04 09:39, Péter Böszörményi wrote:
> Ossze tudnal dobni egy minimal kodot, + xml-t (+ xsd), ami
> reprodukalja a problemas mukodest?
>
>
> On 2018-01-04 08:23, zamek wrote:
>> Szia,
>>
>> Koszi, ettol tartottam:(
>>
>> On 01/03/2018 08:21 PM, Péter Böszörményi wrote:
>>>
>>> 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?
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Javalist mailing list
>>> Javalist at lists.javaforum.hu
>>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
>>
>
További információk a(z) Javalist levelezőlistáról