Package ru.bgcrm.util
Class XMLUtils
java.lang.Object
ru.bgcrm.util.XMLUtils
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
createTextNode
(Node node, String text) Создание текстового узла - потомка.Делает Iterable от Element из NodeList, для удобного обхода.static Element
getElement
(Document doc, String elementName) Ищет элемент в документе по имени.static String
getElementText
(Node node) Extracts content of a XML element as a string with all sub-tags.static Node
Берёт Node по имени тега из Document.static final Document
Создаёт и возвращает новый объект XML документ.static final Element
newElement
(Document parent, String name) Создать элемент на родительском документе.static final Element
newElement
(Element parent, String name) Создаёт объект-узел с заданным именем в родительском узле.static Document
parseDocument
(InputStream stream) static Document
parseDocument
(InputStream stream, boolean showError) static Document
parseDocument
(InputSource source) static Document
parseDocument
(InputSource source, boolean showError) static void
parseDocument
(InputSource source, ContentHandler handler) static void
Подготавливает элемент к XML сериализации, заменяет запрещённые символы на \\u{code}.static String
prepareString
(StringBuilder buf, String nodeValue) Подготавливает строки к XML сериализации, заменяет запрещённые символы на \\u{code}.static Element
selectElement
(Node node, String expression) Возвращает элемент по XPath expression.selectElements
(Node node, String expression) static Node
selectNode
(Node node, String expression) Возвращает Node по XPath expression.static NodeList
selectNodeList
(Node node, String expression) Возвращает NodeList по XPath expression.static String
selectText
(Node node, String expression) Выборка строкового значения по xpath.static String
selectText
(Node node, String expression, String defaultValue) Выборка строкового значения по xpath.static void
serialize
(Node xml, OutputStream result, String encoding, boolean pretty) static void
setAttribute
(Element element, String name, String value) Установка значения атрибута, только если оно не равно null.static void
Трансформация xml+xstl→выход
-
Constructor Details
-
XMLUtils
public XMLUtils()
-
-
Method Details
-
getElementText
Extracts content of a XML element as a string with all sub-tags.- Parameters:
node
- the element node.- Returns:
-
newDocument
Создаёт и возвращает новый объект XML документ.- Returns:
-
newElement
Создаёт объект-узел с заданным именем в родительском узле.- Parameters:
parent
- родительский узел.name
- имя нового узла.- Returns:
-
newElement
Создать элемент на родительском документе. Ибо для Element версия ни при каких условиях не работает (OwnerDocument всегда null), не помогает и всякие getDocumentElement.- Parameters:
parent
-name
-- Returns:
-
createTextNode
Создание текстового узла - потомка. То есть "устанавливаем текст внутрь указанного нода". Если нод - /data, то будет <data>текст</data>- Parameters:
node
- узелtext
- текст
-
setAttribute
Установка значения атрибута, только если оно не равно null.- Parameters:
element
- элементname
- имя аттрибутаvalue
- значение аттрибута
-
parseDocument
-
parseDocument
-
parseDocument
-
parseDocument
-
parseDocument
-
getElement
Ищет элемент в документе по имени. Если не находит - возвращает созданный.- Parameters:
doc
-elementName
-- Returns:
-
getNode
Берёт Node по имени тега из Document. В случае отсутствия - создаёт новый Node и возвращает его.- Parameters:
doc
- документnodeName
- имя узла- Returns:
- узел
- See Also:
-
selectElement
Возвращает элемент по XPath expression.- Parameters:
node
-expression
- XPath expression- Returns:
- элемент, если найден - иначе null
- See Also:
-
selectNode
Возвращает Node по XPath expression. Пример: /data/table - выбрать элемент table лежащий в корне. Пример: //table - выбрать элемент table где попало- Parameters:
node
-expression
- XPath expression- Returns:
- Node, если найден - иначе null
-
selectNodeList
Возвращает NodeList по XPath expression.- Parameters:
node
-expression
- XPath expression- Returns:
- NodeList, если найден - иначе null
-
selectElements
-
elements
Делает Iterable от Element из NodeList, для удобного обхода.- Parameters:
nodeList
- исходный NodeList- Returns:
- Iterable<Element>.
-
selectText
Выборка строкового значения по xpath. Дефолт валуе - null.- See Also:
-
selectText
Выборка строкового значения по xpath. То есть практически тоже самое, что selectNode, только от него возвращается node value, либо null, если что-то не найдено или какая-то ошибка (нуть не должен возвращать текст итд) Может возвращать и значения текстовых нод и значения атрибутов, универсальная.
В целом, не предназначен для выборок вроде selectText( node, "@selected", null), потому что в том что getAttribute возвращает не null, а пустую строку нет ничего страшного. Тем более есть метод, который и null возвращает и работает быстрее.
Примеры запросов:
1) запрос текстового значения атрибута<data><payment cardnumber="111">... /data/payment/@cardnumber
2) запрос текстового значения ноды...<operation><pursesrc>текст</pursesrc>... /operation/pursesrc/text()
3) не от корня, а относительно - начиная не со сшеша
4) искать где попало - два слеша
5) и т.д., ну вы поняли- Parameters:
node
- ноде корневойexpression
- xpathdefaultValue
- значение по умолчанию- Returns:
- строка
- See Also:
-
serialize
public static void serialize(Node xml, OutputStream result, String encoding, boolean pretty) throws Exception - Throws:
Exception
-
prepareElementToSerialize
Подготавливает элемент к XML сериализации, заменяет запрещённые символы на \\u{code}. Используется в местах, где возможно появление недопустимых XML символов.- Parameters:
el
- исходный элемент в теле, названии, дочерних элементах и атрибутах возможны запрещённые символы.
-
prepareString
Подготавливает строки к XML сериализации, заменяет запрещённые символы на \\u{code}. Используется в местах, где возможно появление недопустимых XML символов.- Parameters:
buf
- вспомогательный буфер, в который складывается результат, чтобы не выделять каждый раз заново.nodeValue
- исходная строка, где возможны запрещённые символы.- Returns:
-
transform
public static void transform(Source xml, Source xslt, Result res, String enc) throws TransformerException Трансформация xml+xstl→выход- Parameters:
xml
- исходный документ xml в виде Source.xslt
- исходный документ xslt в виде Source.res
- результат (например, готовый FO-документ) в виде Result.enc
- кодировка, может быть null, тогда получается из шаблона.- Throws:
TransformerException
- ошибка трансформации.
-