Package org.bgerp.util.xml

# Class XMLUtils

java.lang.Object
org.bgerp.util.xml.XMLUtils

Direct Known Subclasses:
  `XMLUtils`

public class XMLUtils extends Object

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `XMLUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `createTextNode(Node node, String text)`
  Создание текстового узла - потомка.
  `static Iterable<Element>`
  `elements(NodeList nodeList)`
  Делает 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`
  `getNode(Document doc, String nodeName)`
  Берёт Node по имени тега из Document.
  `static final Document`
  `newDocument()`
  Создаёт и возвращает новый объект 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(InputSource source)`
  `static Element`
  `selectElement(Node node, String expression)`
  Возвращает элемент по XPath expression.
  `static Iterable<Element>`
  `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.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## 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(InputSource source)

  - ### 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(Node, String)`

  - ### 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(Node, String, String)`

  - ### 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:
      - `selectNode(org.w3c.dom.Node, java.lang.String)`

  - ### serialize

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