Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface SQLXML
Интерфейс SQLXML обеспечивает методы для того, чтобы они получили доступ к значению XML как к Строке, Читателю или Писателю, или как Поток. К значению XML можно также получить доступ через Источник или установлено в результате, которые используются с XML API Синтаксического анализатора, такие как ДОМ, SAX, и StAX, так же как с XSLT преобразовывает и оценки XPath.
Методы в интерфейсах ResultSet, CallableStatement, и PreparedStatement, таких как getSQLXML позволяют программисту получать доступ к значению XML. Кроме того, у этого интерфейса есть методы для того, чтобы обновить значение XML.
Значение XML экземпляра SQLXML может быть получено как использование BinaryStream
SQLXML sqlxml = resultSet.getSQLXML(column); InputStream binaryStream = sqlxml.getBinaryStream();Например, чтобы проанализировать значение XML с синтаксическим анализатором ДОМА:
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document result = parser.parse(binaryStream);или проанализировать значение XML с синтаксическим анализатором SAX к Вашему обработчику:
SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); parser.parse(binaryStream, myHandler);или проанализировать значение XML с синтаксическим анализатором StAX:
XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader streamReader = factory.createXMLStreamReader(binaryStream);
Поскольку базы данных могут использовать оптимизированное представление для XML, получая доступ к значению через getSource (), и setResult () может привести к улучшенной производительности обработки, не сериализируя к потоковому представлению и анализируя XML.
Например, чтобы получить Узел ДОМА Докьюмнта:
DOMSource domSource = sqlxml.getSource(DOMSource.class); Document document = (Document) domSource.getNode();или установить значение в Узел ДОМА Докьюмнта к myNode:
DOMResult domResult = sqlxml.setResult(DOMResult.class); domResult.setNode(myNode);или, чтобы отправить события SAX Вашему обработчику:
SAXSource saxSource = sqlxml.getSource(SAXSource.class); XMLReader xmlReader = saxSource.getXMLReader(); xmlReader.setContentHandler(myHandler); xmlReader.parse(saxSource.getInputSource());или, чтобы установить значение результата от событий SAX:
SAXResult saxResult = sqlxml.setResult(SAXResult.class); ContentHandler contentHandler = saxResult.getXMLReader().getContentHandler(); contentHandler.startDocument(); // set the XML elements and attributes into the result contentHandler.endDocument();или, чтобы получить события StAX:
StAXSource staxSource = sqlxml.getSource(StAXSource.class); XMLStreamReader streamReader = staxSource.getXMLStreamReader();или, чтобы установить значение результата от событий StAX:
StAXResult staxResult = sqlxml.setResult(StAXResult.class); XMLStreamWriter streamWriter = staxResult.getXMLStreamWriter();или, чтобы выполнить преобразования XSLT на значении XML, используя XSLT в выводе xsltFile к файлу resultFile:
File xsltFile = new File("a.xslt"); File myFile = new File("result.xml"); Transformer xslt = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile)); Source source = sqlxml.getSource(null); Result result = new StreamResult(myFile); xslt.transform(source, result);или, чтобы оценить выражение XPath на значении XML:
XPath xpath = XPathFactory.newInstance().newXPath(); DOMSource domSource = sqlxml.getSource(DOMSource.class); Document document = (Document) domSource.getNode(); String expression = "/foo/@bar"; String barValue = xpath.evaluate(expression, document);Чтобы установить значение XML, чтобы быть результатом XSLT, преобразуйте:
File sourceFile = new File("source.xml"); Transformer xslt = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile)); Source streamSource = new StreamSource(sourceFile); Result result = sqlxml.setResult(null); xslt.transform(streamSource, result);Любой Источник может быть преобразован к Результату, используя идентификационные данные, преобразовывают определенный, вызывая newTransformer ():
Transformer identity = TransformerFactory.newInstance().newTransformer(); Source source = sqlxml.getSource(null); File myFile = new File("result.xml"); Result result = new StreamResult(myFile); identity.transform(source, result);Записать содержание Источника к стандартному выводу:
Transformer identity = TransformerFactory.newInstance().newTransformer(); Source source = sqlxml.getSource(null); Result result = new StreamResult(System.out); identity.transform(source, result);Создать DOMSource из DOMResult:
DOMSource domSource = new DOMSource(domResult.getNode());
Неполные или недопустимые значения XML могут вызвать SQLException когда установлено, или исключение может произойти, когда выполняются (), происходит. Все потоки должны быть закрыты, прежде выполняются (), происходит, или SQLException будет брошен.
Чтение и запись XML оценивают, или от SQLXML объект может произойти самое большее однажды. Концептуальные состояния читаемых и не читаемый определяют, возвратит ли один из API чтения значение или выдаст исключение. Концептуальные состояния перезаписываемых и не перезаписываемый определяют, установит ли один из API записи значение или выдаст исключение.
Перемещения состояния от читаемого до не читаемый однажды свободный () или любой из API чтения вызывают: getBinaryStream (), getCharacterStream (), getSource (), и getString (). Реализации могут также изменить состояние на не перезаписываемый, когда это происходит.
Перемещения состояния от перезаписываемого до не writeable однажды свободный () или любой из API записи вызывают: setBinaryStream (), setCharacterStream (), setResult (), и setString (). Реализации могут также изменить состояние на не читаемый, когда это происходит.
Все методы на SQLXML
интерфейс должен быть полностью реализован, если драйвер JDBC поддерживает тип данных.
javax.xml.parsers
, javax.xml.stream
, javax.xml.transform
, javax.xml.xpath
Модификатор и Тип | Метод и Описание |
---|---|
void |
free()
Этот метод закрывает этот объект и высвобождает средства, которые это содержало.
|
InputStream |
getBinaryStream()
Получает значение XML, определяемое этим экземпляром SQLXML как поток.
|
Читатель |
getCharacterStream()
Получает значение XML, определяемое этим экземпляром SQLXML как java.io. Объект читателя.
|
<T extends Source> |
getSource(Class<T> sourceClass)
Возвращает Источник для того, чтобы считать значение XML, определяемое этим экземпляром SQLXML.
|
Строка |
getString()
Возвращает строковое представление значения XML, определяемого этим экземпляром SQLXML.
|
OutputStream |
setBinaryStream()
Получает поток, который может использоваться, чтобы записать значение XML, которое представляет этот экземпляр SQLXML.
|
Писатель |
setCharacterStream()
Получает поток, который будет использоваться, чтобы записать значение XML, которое представляет этот экземпляр SQLXML.
|
<T extends Result> |
setResult(Class<T> resultClass)
Возвращает Результат для того, чтобы установить значение XML, определяемое этим экземпляром SQLXML.
|
void |
setString(String value)
Устанавливает значение XML, определяемое этим экземпляром SQLXML к данному Строковому представлению.
|
void free() throws SQLException
free
был вызван, любая попытка вызвать метод кроме free
приведет к a SQLException
быть брошенным. Если free
вызывается многократно, последующие звонки free
обрабатываются как нет.SQLException
- если есть ошибка, освобождая значение XML.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методInputStream getBinaryStream() throws SQLException
Объект XML SQL становится не читаемым, когда этот метод вызывают и может также стать не перезаписываемым в зависимости от реализации.
SQLException
- если есть ошибка, обрабатывая значение XML. Исключение выдается, если состояние не читаемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методOutputStream setBinaryStream() throws SQLException
Объект XML SQL становится не writeable, когда этот метод вызывают и может также стать не читаемым в зависимости от реализации.
SQLException
- если есть ошибка, обрабатывая значение XML. Исключение выдается, если состояние не перезаписываемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методReader getCharacterStream() throws SQLException
Объект XML SQL становится не читаемым, когда этот метод вызывают и может также стать не перезаписываемым в зависимости от реализации.
SQLException
- если есть ошибка, обрабатывая значение XML. getCause () метод исключения может обеспечить более подробное исключение, например, если поток не содержит допустимые символы. Исключение выдается, если состояние не читаемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методWriter setCharacterStream() throws SQLException
Объект XML SQL становится не writeable, когда этот метод вызывают и может также стать не читаемым в зависимости от реализации.
SQLException
- если есть ошибка, обрабатывая значение XML. getCause () метод исключения может обеспечить более подробное исключение, например, если поток не содержит допустимые символы. Исключение выдается, если состояние не перезаписываемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методString getString() throws SQLException
Объект XML SQL становится не читаемым, когда этот метод вызывают и может также стать не перезаписываемым в зависимости от реализации.
SQLException
- если есть ошибка, обрабатывая значение XML. getCause () метод исключения может обеспечить более подробное исключение, например, если поток не содержит допустимые символы. Исключение выдается, если состояние не читаемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот методvoid setString(String value) throws SQLException
Объект XML SQL становится не writeable, когда этот метод вызывают и может также стать не читаемым в зависимости от реализации.
value
- значение XMLSQLException
- если есть ошибка, обрабатывая значение XML. getCause () метод исключения может обеспечить более подробное исключение, например, если поток не содержит допустимые символы. Исключение выдается, если состояние не перезаписываемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот метод<T extends Source> T getSource(Class<T> sourceClass) throws SQLException
У источников для синтаксических анализаторов XML будет обработка пространства имен на по умолчанию. systemID Источника является зависящим от реализации.
Объект XML SQL становится не читаемым, когда этот метод вызывают и может также стать не перезаписываемым в зависимости от реализации.
Отметьте, что SAX является архитектурой обратного вызова, таким образом, возвращенный SAXSource должен тогда быть установлен с обработчиком содержимого, который получит события SAX от парсинга. Обработчик содержимого получит обратные вызовы, основанные на содержании XML.
SAXSource saxSource = sqlxml.getSource(SAXSource.class); XMLReader xmlReader = saxSource.getXMLReader(); xmlReader.setContentHandler(myHandler); xmlReader.parse(saxSource.getInputSource());
sourceClass
- Класс источника, или нуль. Если класс будет нулем, то поставщик specifc Исходная реализация будет возвращен. Следующие классы поддерживаются как минимум: javax.xml.transform.dom.DOMSource - returns a DOMSource javax.xml.transform.sax.SAXSource - returns a SAXSource javax.xml.transform.stax.StAXSource - returns a StAXSource javax.xml.transform.stream.StreamSource - returns a StreamSource
SQLException
- если есть ошибка, обрабатывая значение XML или если эта функция не поддерживается. getCause () метод исключения может обеспечить более подробное исключение, например, если исключение синтаксического анализатора XML происходит. Исключение выдается, если состояние не читаемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот метод<T extends Result> T setResult(Class<T> resultClass) throws SQLException
systemID Результата является зависящим от реализации.
Объект XML SQL становится не writeable, когда этот метод вызывают и может также стать не читаемым в зависимости от реализации.
Отметьте, что SAX является архитектурой обратного вызова, и возвращенному SAXResult присваивали обработчик содержимого, который получит события SAX, основанные на содержании XML. Вызовите обработчик содержимого с содержанием XML-документа, чтобы присвоить значения.
SAXResult saxResult = sqlxml.setResult(SAXResult.class); ContentHandler contentHandler = saxResult.getXMLReader().getContentHandler(); contentHandler.startDocument(); // set the XML elements and attributes into the result contentHandler.endDocument();
resultClass
- Класс результата, или нуль. Если resultClass будет нулем, поставщик, то определенная реализация Результата будет возвращена. Следующие классы поддерживаются как минимум: javax.xml.transform.dom.DOMResult - returns a DOMResult javax.xml.transform.sax.SAXResult - returns a SAXResult javax.xml.transform.stax.StAXResult - returns a StAXResult javax.xml.transform.stream.StreamResult - returns a StreamResult
SQLException
- если есть ошибка, обрабатывая значение XML или если эта функция не поддерживается. getCause () метод исключения может обеспечить более подробное исключение, например, если исключение синтаксического анализатора XML происходит. Исключение выдается, если состояние не перезаписываемо.SQLFeatureNotSupportedException
- если драйвер JDBC не поддерживает этот метод
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.