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

Tamás Viktor viktor.tamas at gmail.com
2018. Jan. 4., Cs, 12:48:02 UTC


Hadd idézzek egy klasszikust:
"Volt egy problémám, azt javasolták használjak XML-t. Most már két
problémám van."
Amúgy ez csak egy lapos poén, XML helyére nyilván bármi behelyettesíthető.

Nekem egyébként ez roppant gyanússá teszi az esetet:

>>>> 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.

Az ugyanis elég életszerűtlennek tűnik, hogy az egyik newline karaktert
lenyeli a parser a másikat meg nem.
Szóval kódolási hibát gyanítok.

Vagy pedig bele kell nézni a parser forráskódjába, akár az is lehet bugos.
Ha muszáj akkor ennek a metódusnak a használatával
<https://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance-java.lang.String-java.lang.ClassLoader->
le lehet cserélni a default SAX parser implementációt egy másikra.
V

2018-01-04 13:28 GMT+01:00 Peter Verhas <peter at verhas.com>:

> Mert szívsz vele, mint a mellékelt példa mutatja. De ha ez neked így jó,
> az a te dolgod.
>
> Vadász és a medve.
>
> Péter
>
> On Thu, Jan 4, 2018 at 12:50 PM Péter Böszörményi <zmblevlist at gmail.com>
> wrote:
>
>> Megforditom a kerdest. Miert ne XML legyen a formatum?
>>
>> On 2018-01-04 12:32, Peter Verhas wrote:
>>
>> Egyértelműen CDATA.
>>
>> Garami Gábor megoldása tényleg undorító, és ez volt az utolsó eset.
>>
>> Amúgy meg miért XML a szerializációs formátum? Az nem egészen világos
>> számomra, hogy mit jelent, hogy az XML önellenőrző. Maximum a parser
>> ellenőrzi, és schema definiálhatja pluszban az alap szintaktika felett. No
>> de schema verzérelt parserek vannak más formátumokhoz is. Így hirtelen JSON
>> megy YAML jut eszembe, amik legalább ugyanannyira nem felhasználó barátok,
>> mint az XML.
>>
>> Miért nem húzol fel egy bármilyen, akár PHP alapú open kontent
>> menedzsment rendszert és olvasol az adatbázisából?
>>
>> Péter
>>
>> On Thu, Jan 4, 2018 at 9:45 AM Péter Böszörményi <zmblevlist at gmail.com>
>> wrote:
>>
>>> 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
>>> >>
>>> >>
>>> >
>>>
>>> _______________________________________________
>>> Javalist mailing list
>>> Javalist at lists.javaforum.hu
>>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>>
>>
>>
>> --
>> Peter Verhas
>> verhas@ skype, fb, google+, twitter, linkedin
>> +41 79 154 20 95 <+41%2079%20154%2020%2095>
>> 継続は力なり
>>
>>
>> _______________________________________________
>> Javalist mailing listJavalist at lists.javaforum.huhttp://lists.javaforum.hu/mailman/listinfo/javalist
>>
>>
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
>
>
> --
> Peter Verhas
> verhas@ skype, fb, google+, twitter, linkedin
> +41 79 154 20 95 <+41%2079%20154%2020%2095>
> 継続は力なり
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20180104/ae775f8c/attachment.html>


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