write - loadxml java




È essenziale che io usi le librerie per manipolare XML? (8)

Sto usando il back-end Java per creare una stringa XML che viene passata al browser. Attualmente sto usando una semplice manipolazione delle stringhe per produrre questo XML. È essenziale utilizzare una libreria XML in Java per produrre la stringa XML? Trovo le librerie molto difficili da usare rispetto a ciò di cui ho bisogno.


No - Se puoi analizzarlo da solo (come stai facendo), e scalerà in base alle tue esigenze, non avrai bisogno di alcuna libreria.

Assicurati solo che le tue esigenze future siano soddisfatte: la creazione di xml complesse viene eseguita meglio utilizzando le librerie, alcune delle quali sono disponibili anche in versioni molto semplici.


No - soprattutto per la generazione (l'analisi sarebbe meno incline a come il testo di input può sempre sorprenderti). Penso che sia una buona cosa, ma sii pronto a passare a una biblioteca nel caso ti trovassi a spendere più di qualche minuto per mantenere il tuo codice.


Non penso che usare l'API DOM XML che viene fornito con JDK sia difficile, è facile creare nodi Element, attributi, ecc ... e in seguito è facile convertire stringhe in un documento DOM con documenti DOM in una stringa

Nella prima pagina trovi google dalla Spagna ( esempio XML spagnolo ):

public String DOM2String(Document doc)
{
    TransformerFactory transformerFactory =TransformerFactory.newInstance();
    Transformer transformer = null;
    try{
        transformer = transformerFactory.newTransformer();
    }catch (javax.xml.transform.TransformerConfigurationException error){
        coderror=123;
        msgerror=error.getMessage();
        return null;
    }

    Source source = new DOMSource(doc);

    StringWriter writer = new StringWriter();
    Result result = new StreamResult(writer);
    try{
        transformer.transform(source,result);
    }catch (javax.xml.transform.TransformerException error){
        coderror=123;
        msgerror=error.getMessage();
        return null;
    }

    String s = writer.toString();
    return s;
}

public Document string2DOM(String s)
{
    Document tmpX=null;
    DocumentBuilder builder = null;
    try{
        builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    }catch(javax.xml.parsers.ParserConfigurationException error){
        coderror=10;
        msgerror="Error crando factory String2DOM "+error.getMessage();
        return null;
    }
    try{
        tmpX=builder.parse(new ByteArrayInputStream(s.getBytes()));
    }catch(org.xml.sax.SAXException error){
        coderror=10;
        msgerror="Error parseo SAX String2DOM "+error.getMessage();
        return null;
    }catch(IOException error){
        coderror=10;
        msgerror="Error generando Bytes String2DOM "+error.getMessage();
        return null;
    }
    return tmpX;
}

Penso che la manipolazione personalizzata delle stringhe sia soddisfacente, ma devi tenere a mente due cose:

  1. Il tuo codice non è maturo come la biblioteca. Assegna tempo nel tuo piano per gestire gli errori che compaiono.
  2. Il tuo approccio probabilmente non si ridimensiona così come una libreria di terze parti quando il xml inizia a crescere (sia in termini di prestazioni che di facilità d'uso).

Conosco un codice base che utilizza la manipolazione personalizzata delle stringhe per l'output xml (e una libreria di terze parti per l'input). Andava bene, ma dopo un po 'è diventata una vera seccatura.


Xml è difficile. Analizzare te stesso è una cattiva idea, è anche un'idea peggio di generare contenuti tu stesso. Dai uno sguardo alle specifiche Xml 1.1.

Devi occuparti di cose come la codifica corretta, la codifica degli attributi (ad esempio, produce xml non valido), l'escape corretto di CDATA, la codifica UTF, le entità DTD personalizzate, e senza gettare nello spazio dei nomi xml il mix con lo spazio dei nomi predefinito / vuoto, attributi dello spazio dei nomi , eccetera.

Impara un kit di strumenti, c'è abbondanza disponibile.


Non utilizzando una libreria, si rischia di generare o analizzare dati non ben formati, che prima o poi accadrà. Per la stessa ragione, document.write non è consentito in XHTML, non si dovrebbe scrivere il codice XML come stringa.


Sì.

Non ha senso saltare lo strumento essenziale: anche scrivere xml non è banale con la necessità di sfuggire a e commerciali e lts, ​​per non parlare dei bind di namespace (se necessario). E alla fine le librerie possono generalmente leggere e scrivere xml non solo in modo più affidabile ma anche più efficiente (specialmente per Java).

Ma potresti aver visto strumenti sbagliati, se sembrano complicati. L'associazione dei dati utilizzando JAXB o XStream è semplice; ma per semplice output XML diretto, vado con StaxMate . In realtà può semplificare l'operazione in molti modi (chiude automaticamente i tag di avvio, scrive le dichiarazioni dei namespace se necessario, ecc.).








xml