Как сгенерировать XML-файл из набора выражений XPath?

Я хочу иметь возможность генерировать полный файл XML с учетом набора сопоставлений XPath.

Входные данные могут быть указаны в двух сопоставлениях:(1 )Один, в котором перечислены выражения и значения XPath; и (2 )другой, который определяет соответствующие пространства имен.

/create/article[1]/id                 => 1
/create/article[1]/description        => bar
/create/article[1]/name[1]            => foo
/create/article[1]/price[1]/amount    => 00.00
/create/article[1]/price[1]/currency  => USD
/create/article[2]/id                 => 2
/create/article[2]/description        => some name
/create/article[2]/name[1]            => some description
/create/article[2]/price[1]/amount    => 00.01
/create/article[2]/price[1]/currency  => USD

Для пространств имен:

/create               => xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/
/create/article       => xmlns:ns1='http://predic8.com/material/1/‘
/create/article/price => xmlns:ns1='http://predic8.com/common/1/‘
/create/article/id    => xmlns:ns1='http://predic8.com/material/1/'

Также обратите внимание, что важно, чтобы я также имел дело с выражениями XPath Attributes . Например, :я также должен иметь возможность обрабатывать атрибуты, такие как:

/create/article/@type => richtext

Окончательный вывод должен выглядеть примерно так:


    
        foo
        bar
        
            00.00
            USD
        
        1
    
    
        some name
        some description
        
            00.01
            USD
        
        2
    

PS :Это более подробный вопрос к предыдущему вопросу , хотя из-за ряда дополнительных требований и разъяснений мне было рекомендовано задать более широкий вопрос, чтобы удовлетворить мои потребности.

Обратите также внимание, что я реализую это на Java. Таким образом, решение на основе Java -или XSLT -будет вполне приемлемым. Спасибо.

Дальнейшее примечание :Я действительно ищу универсальное решение. XML, показанный выше, является просто примером.

7
задан Community 23 May 2017 в 12:22
поделиться