我需要为我正在处理的soapUI项目动态生成xml。我认为从用户的角度来看效果最好的方法是将数据放在excel中,如下图所示。
使用看起来像这样的模板XML将xpath维护到列名称映射....
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="URL1" xmlns:ns1="URL2" xmlns:ns2="URL3" xmlns:ns3="URL4" xmlns:ns4="URL5" xmlns:ns5="URL6">
<soap:Header/>
<soap:Body>
<ns:Node1>
<Node2>
<ns1:Node3>
<ns4:btc>
<ns5:AnotherNode>
<ns2:ownerDN>Value1</ns2:ownerDN>
<ns2:context>
<!--one or more occurrences-->
<ns2:contextItem name="Attribute1">value2</ns2:contextItem>
</ns2:context>
<ns2:type>Value5</ns2:type>
<ns2:value>Value6</ns2:value>
</ns5:AnotherNode>
<ns5:role>value7</ns5:role>
</ns4:btc>
</ns1:Node3>
</Node2>
</ns:Node1>
</soap:Body>
</soap:Envelope>
xpath 2 col name map
我正在使用来自其中一个答案的XSLT(抱歉我现在无法找到答案)来生成xpath。
我现在要做的是根据xpath生成类似下面的XML。对于元素/属性值,我将使用excel中的值。我更喜欢使用XSLT完成此操作,但我不擅长XSLT。
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns="URL1"
xmlns:ns1="URL2"
xmlns:ns2="URL3"
xmlns:ns3="URL4"
xmlns:ns4="URL5"
xmlns:ns5="URL6">
<soap:Header/>
<soap:Body>
<ns:Node1>
<Node2>
<ns1:Node3>
<ns4:btc>
<ns5:AnotherNode>
<ns2:ownerDN>Value1</ns2:ownerDN>
<ns2:context>
<ns2:contextItem name="Attribute1">value2</ns2:contextItem>
<ns2:contextItem name="Attribute2">value3</ns2:contextItem>
<ns2:contextItem name="Attribute3">value4</ns2:contextItem>
</ns2:context>
<ns2:type>Value5</ns2:type>
<ns2:value>Value6</ns2:value>
</ns5:AnotherNode>
<ns5:role>value7</ns5:role>
</ns4:btc>
</ns1:Node3>
</Node2>
</ns:Node1>
</soap:Body>
</soap:Envelope>
最后,即使我确实提到过soapUI,也需要使用VBA在excel中实现此解决方案。