Как перевести String to Document
От: Аноним  
Дата: 07.03.08 12:01
Оценка:
Можно ли xml String перевести в org.w3c.dom.Document
если да то как?
Re: Как перевести String to Document
От: baranovda Российская Империя  
Дата: 07.03.08 12:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Можно ли xml String перевести в org.w3c.dom.Document

А>если да то как?

public Document loadXML(String XML) 
            throws IOException, ParserConfigurationException, SAXException 
    {
        InputStream pStm = new ByteArrayInputStream(XML.getBytes());
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
        DocumentBuilder bulder = factory.newDocumentBuilder();
        return builder.parse(pStm);
    }
Re[2]: Как перевести String to Document
От: Blazkowicz Россия  
Дата: 07.03.08 12:22
Оценка:
Здравствуйте, baranovda, Вы писали:

B>
B>        InputStream pStm = new ByteArrayInputStream(XML.getBytes());
B>        return builder.parse(pStm);
B>    }
B>


Можно и без лишнего byte[] обойтись.
через InputSource и StringReader
Re[2]: Как перевести String to Document
От: Аноним  
Дата: 07.03.08 12:26
Оценка:
B>
B>public Document loadXML(String XML) 
B>            throws IOException, ParserConfigurationException, SAXException 
B>    {
B>        InputStream pStm = new ByteArrayInputStream(XML.getBytes());
B>                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
B>        factory.setNamespaceAware(true);
B>        factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
B>        DocumentBuilder bulder = factory.newDocumentBuilder();
B>        return builder.parse(pStm);
B>    }
B>


на входе чтото типа

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:altova="http://www.altova.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<head>
<title />
</head>
<body>
<br />
....

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:547)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2672)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
Re[3]: Как перевести String to Document
От: baranovda Российская Империя  
Дата: 07.03.08 12:35
Оценка:
Здравствуйте, Аноним, Вы писали:

1) см. String.getBytes(Charset charset)
2) см. String.getBytes(String charsetName)
Re[3]: Как перевести String to Document
От: Blazkowicz Россия  
Дата: 07.03.08 13:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.

Ты таки попробуй
builder.parse(new InputSource(new StringReader(XML)));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.