我有许多包含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/