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

Péter Böszörményi zmblevlist at gmail.com
2018. Jan. 4., Cs, 08:39:25 UTC


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