[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