Здравствуйте, Аноним, Вы писали:
А>Можно ли 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);
}
Здравствуйте, baranovda, Вы писали:
B>B> InputStream pStm = new ByteArrayInputStream(XML.getBytes());
B> return builder.parse(pStm);
B> }
B>
Можно и без лишнего byte[] обойтись.
через InputSource и StringReader
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)