Заполнить XML-файл из XPath в Java - PullRequest
0 голосов
/ 25 октября 2018

У меня есть XML-файл, который может быть пустым или уже частично заполненным, и мне дан XPath, в который я должен вставить еще несколько узлов XML.Какой более чистый способ создать все необходимые дочерние узлы?На мой взгляд, я хотел бы найти что-то вроде mkdirs() метода java.io.File класса.

Пример , учитывая XPath /root/child/grandson, ожидаемый результат будет (на основе пустого входного файла):

<root>
    <child>
        <grandson></grandson>
    </child>
</root>

Редактировать : на данный момент мне удалось решить мой простой вариант использования, разделив XPath и вложив узлы, любой другой очистительРешение будет оценено.

1 Ответ

0 голосов
/ 25 октября 2018

Если все пути так просты (последовательность имен элементов, разделенных косыми чертами), то это можно сделать в XQuery или XSLT с помощью рекурсивной функции.В синтаксисе XQuery:

declare function local:generate($names as xs:string*) as element(*) {
   if (exists($names)) then
      element{head($names)}{local:generate(tail($names)}
   else ()
};
local:generate(tokenize("/root/child/grandson", "/")[.]);

Объяснение: сначала разбейте строку на границы «/»;удалить пустые строки с помощью предиката [.];передать результирующую последовательность строк в функцию, которая создает элемент с именем первой строки в списке, а затем вызывает себя для обработки остальной части списка, присоединяя результат в качестве содержимого созданного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...