Мыло Java: чтение и изменение узлов в файлах XML - PullRequest
1 голос
/ 28 октября 2010

У меня есть несколько предварительно сгенерированных статических XML-файлов, содержащих запросы на мыло.Я могу прочитать их, отправить запрос, получить ответ и ответить с сервера.Я хотел бы получить несколько советов о том, как создать динамический процесс:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getProject xmlns="http://myserver/">
      <atr1>string</atr1>
      <atr2>string</atr2>
    </getProject>
  </soap:Body>
</soap:Envelope>

Итак, я хочу иметь возможность читать эти XML-файлы, изменять значения узлов и т. Д. До реальных значенийот пользовательского ввода во время выполнения.Что было бы лучше всего: читать файл xml построчно и использовать регулярное выражение для замены значения, или, возможно, сделать временную копию файла xml, использовать sax для замены значения узла, затем отправить новый xml илиполностью отказаться от предварительно сгенерированных файлов XML и вместо этого создавать их на лету, или как?Мы ценим любые предложения.

Ответы [ 4 ]

1 голос
/ 28 августа 2013
private void changeTagData(List<String> tagNameList, SOAPBody body) {
        for(String tagName : tagNameList){
            NodeList nodeList = body.getElementsByTagName(tagName);
            int length = nodeList.getLength();
            Node node;
            for (int i = 0; i < length; i++) {
                node = (Node) nodeList.item(i);

                node.setTextContent("change tag data");
            }
        }

    }
1 голос
/ 29 октября 2010

Вы можете использовать castor и создавать объекты из XML и XML из объектов.

1 голос
/ 28 октября 2010
  • Использование регулярных выражений будет хрупким, потому что форматирование XML может измениться так, как вы этого не ожидаете, и все равно будет правильным и корректным XML, но не будет соответствовать вашим регулярным выражениям.В общем случае не рекомендуется использовать регулярные выражения для синтаксического анализа XML.
  • Использование SAX для чтения в файле XML (зачем делать временную копию?), Копирование всех узлов в вывод, изменение определенных узлов для ввода в пользователяпоставляемые ценности.Это звучит как хорошее, работоспособное решение.
  • Создайте XML с нуля: это звучит проще, если вы заранее знаете их структуру и она не слишком велика.Один из способов сделать это - использовать таблицу стилей XSLT и передать введенные пользователем значения в качестве параметров.
0 голосов
/ 15 февраля 2011

XStream также может быть использован в этом процессе, я также делаю то же самое. Если вам нравится, вы можете попробовать XStream также.

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