java - SOAP java : read and change nodes in xml files

标签 java xml soap

我有许多包含soap 请求的预生成的静态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 文件并即时创建它们,或者如何?任何建议,将不胜感激。

最佳答案

  • 使用正则表达式会很脆弱,因为 XML 的格式可能会以您意想不到的方式发生变化,并且仍然是格式正确且有效的 XML,但不适合您的正则表达式。一般来说,不建议使用正则表达式来解析XML。
  • 使用 SAX 读取 XML 文件(为什么要进行临时复制?),将所有节点复制到输出,修改某些节点以放入用户提供的值。这听起来是一个很好、可行的解决方案。
  • 从头开始创建 XML:如果您提前知道它们的结构,这听起来确实更简单,而且它也不是太大。实现此目的的一种方法是使用 XSLT 样式表,并将用户提供的值作为参数传递。

关于java - SOAP java : read and change nodes in xml files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043511/

相关文章:

java - 如何为用户定义的输入提供转义序列

java - 从 WSDL 创建 Java API

.net - SOAP 消息中 bool 值的正确编码是什么?

c++ - 如何使用 XML 文件中的数据填充 MFC 中的列表框?

c# - 以 XML 形式存储的查询字符串属性

xml - Linux,Curl,发送不带 xml 文件的 -X POST

java - 在网络服务中使用 gson

java - 如何从 Number 值反序列化为 int(错误 - 没有 int/Int 参数构造函数/工厂方法从 Number 值反序列化)

java - JSR 303 - 验证多个内部列表

java - 有哪些方法可以避免 String.substring 返回带有无效 unicode 字符的子字符串?