SORU
28 AĞUSTOS 2008, PERŞEMBE


Nasıl bir org yük.w3c.dom.Bir dize XML belge?

Bir dize tam bir XML belgesi var Document bir nesne ister. Google çöp her türlü çıkıyor. En basit çözüm nedir? (Java 1.5)

ÇözümMatt McMinn, teşekkür ederim Bu uygulama üzerinde anlaşmaya vardı. Benim için giriş esneklik ve İstisna parçalı sağ seviyesine sahiptir. (İyi de hata hatalı biçimlendirilmiş XML- SAXException - ya da kötü IO - IOException.) sadece geldiyse bilmek güzel

public static org.w3c.dom.Document loadXMLFrom(String xml)
    throws org.xml.sax.SAXException, java.io.IOException {
    return loadXMLFrom(new java.io.ByteArrayInputStream(xml.getBytes()));
}

public static org.w3c.dom.Document loadXMLFrom(java.io.InputStream is) 
    throws org.xml.sax.SAXException, java.io.IOException {
    javax.xml.parsers.DocumentBuilderFactory factory =
        javax.xml.parsers.DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    javax.xml.parsers.DocumentBuilder builder = null;
    try {
        builder = factory.newDocumentBuilder();
    }
    catch (javax.xml.parsers.ParserConfigurationException ex) {
    }  
    org.w3c.dom.Document doc = builder.parse(is);
    is.close();
    return doc;
}

CEVAP
28 AĞUSTOS 2008, PERŞEMBE


- Yavaş ol!

Karakter String varsayılan olarak UTF-8) belirtilen kodlama yoksayar çünkü bu kod ile potansiyel olarak ciddi bir sorun var. String.getBytes() platform aradığınızda varsayılan kodlama bayt Unicode karakterleri kodlamak için kullanılır. Yani, ayrıştırıcı olacağını düşünmeye olabilir UTF-8 aslında EBCDIC falan&üssün oluyor veri; hiç hoş değil!

Bunun yerine, bu gibi bir Okuyucu ile inşa edilmiş bir İnputSource, alır ayrıştırma yöntemi kullanın

import java.io.StringReader;
import org.xml.sax.InputSource;
…
        return builder.parse(new InputSource(new StringReader(xml)));

Büyük bir anlaşma gibi görünmeyebilir, ama karakter kodlama sorunları cehalet sinsi kodu rot y2k benzer yol açar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Artorius FullPower

    Artorius Ful

    29 Temmuz 2007
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • TROPFEST

    TROPFEST

    27 Mart 2007