XSLT для XML внутри рабочего процесса в JAVA - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю интеграционное решение с Java, которое фильтрует и модифицирует огромные XML-файлы. Эти XML-файлы вводятся в виде документа полезной нагрузки через решение, и для создания большого фильтра в тех частях, которые мне интересны, я хочу использовать таблицу стилей XSLT. Моя трудность заключается в том, что стандартное Java-решение для этого не работает для меня ( XSLT-обработка с Java? ), поскольку я не хочу брать XML из системы, если он уже находится в рабочем процессе решение, и мне нужен источник вывода, чтобы остаться в рабочем процессе.

Element production = docX2.createElement("PRODUCTION");
              try {
                  TransformerFactory factory = TransformerFactory.newInstance();
                  Source xslt = new StreamSource("slimmer.xslt");
                  Transformer transformer = factory.newTransformer(xslt);
                  Source text = new StreamSource((InputStream) docX1);
                  transformer.transform(text, new StreamResult((OutputStream) production));
                } catch (Exception ex) {
                  Logger.getLogger(IntProcess.class.getName()).log(Level.SEVERE, null, ex);
                }
 root.appendChild(production);

docX1 - это входной документ XML, который проходит через решение, а docX2 - это выходной документ (оба являются классом Document в Java). Продукция - это элемент тега из docX2.

1 Ответ

0 голосов
/ 14 ноября 2018

Я решаю это.С помощью этого Преобразование XML с XSLT в Java с использованием DOM Мое решение -

Element production = docX2.createElement("PRODUCTION");
                try {
                    TransformerFactory factory = TransformerFactory.newInstance();
                    Source xslt = new StreamSource("slimmer.xslt");
                    Transformer transformer = factory.newTransformer(xslt);
                    Source text = new DOMSource(docX1);                    
                    transformer.transform(text, new DOMResult(production));                    
                } catch (Exception ex) {
                    Logger.getLogger(IntProcess.class.getName()).log(Level.SEVERE, null, ex);
                }
                root.appendChild(production);

Проблема заключалась в том, чтобы попытаться использовать Stream вместо источника DOM.

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