Package ru.bgcrm.util

Class XMLUtils

java.lang.Object
ru.bgcrm.util.XMLUtils

public class XMLUtils extends Object
  • Constructor Details

    • XMLUtils

      public XMLUtils()
  • Method Details

    • getElementText

      public static String getElementText(Node node)
      Extracts content of a XML element as a string with all sub-tags.
      Parameters:
      node - the element node.
      Returns:
    • newDocument

      public static final Document newDocument()
      Создаёт и возвращает новый объект XML документ.
      Returns:
    • newElement

      public static final Element newElement(Element parent, String name)
      Создаёт объект-узел с заданным именем в родительском узле.
      Parameters:
      parent - родительский узел.
      name - имя нового узла.
      Returns:
    • newElement

      public static final Element newElement(Document parent, String name)
      Создать элемент на родительском документе. Ибо для Element версия ни при каких условиях не работает (OwnerDocument всегда null), не помогает и всякие getDocumentElement.
      Parameters:
      parent -
      name -
      Returns:
    • createTextNode

      public static void createTextNode(Node node, String text)
      Создание текстового узла - потомка. То есть "устанавливаем текст внутрь указанного нода". Если нод - /data, то будет <data>текст</data>
      Parameters:
      node - узел
      text - текст
    • setAttribute

      public static void setAttribute(Element element, String name, String value)
      Установка значения атрибута, только если оно не равно null.
      Parameters:
      element - элемент
      name - имя аттрибута
      value - значение аттрибута
    • parseDocument

      public static Document parseDocument(InputStream stream)
    • parseDocument

      public static Document parseDocument(InputStream stream, boolean showError)
    • parseDocument

      public static Document parseDocument(InputSource source)
    • parseDocument

      public static Document parseDocument(InputSource source, boolean showError)
    • parseDocument

      public static void parseDocument(InputSource source, ContentHandler handler)
    • getElement

      public static Element getElement(Document doc, String elementName)
      Ищет элемент в документе по имени. Если не находит - возвращает созданный.
      Parameters:
      doc -
      elementName -
      Returns:
    • getNode

      public static Node getNode(Document doc, String nodeName)
      Берёт Node по имени тега из Document. В случае отсутствия - создаёт новый Node и возвращает его.
      Parameters:
      doc - документ
      nodeName - имя узла
      Returns:
      узел
      See Also:
      • invalid reference
        findElement
    • selectElement

      public static Element selectElement(Node node, String expression)
      Возвращает элемент по XPath expression.
      Parameters:
      node -
      expression - XPath expression
      Returns:
      элемент, если найден - иначе null
      See Also:
    • selectNode

      public static Node selectNode(Node node, String expression)
      Возвращает Node по XPath expression. Пример: /data/table - выбрать элемент table лежащий в корне. Пример: //table - выбрать элемент table где попало
      Parameters:
      node -
      expression - XPath expression
      Returns:
      Node, если найден - иначе null
    • selectNodeList

      public static NodeList selectNodeList(Node node, String expression)
      Возвращает NodeList по XPath expression.
      Parameters:
      node -
      expression - XPath expression
      Returns:
      NodeList, если найден - иначе null
    • selectElements

      public static Iterable<Element> selectElements(Node node, String expression)
    • elements

      public static Iterable<Element> elements(NodeList nodeList)
      Делает Iterable от Element из NodeList, для удобного обхода.
      Parameters:
      nodeList - исходный NodeList
      Returns:
      Iterable<Element>.
    • selectText

      public static String selectText(Node node, String expression)
      Выборка строкового значения по xpath. Дефолт валуе - null.
      See Also:
    • selectText

      public static String selectText(Node node, String expression, String defaultValue)
      Выборка строкового значения по 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 - xpath
      defaultValue - значение по умолчанию
      Returns:
      строка
      See Also:
    • serialize

      public static void serialize(Node xml, OutputStream result, String encoding, boolean pretty) throws Exception
      Throws:
      Exception
    • prepareElementToSerialize

      public static void prepareElementToSerialize(Node el)
      Подготавливает элемент к XML сериализации, заменяет запрещённые символы на \\u{code}. Используется в местах, где возможно появление недопустимых XML символов.
      Parameters:
      el - исходный элемент в теле, названии, дочерних элементах и атрибутах возможны запрещённые символы.
    • prepareString

      public static String prepareString(StringBuilder buf, String nodeValue)
      Подготавливает строки к 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 - ошибка трансформации.