我链接到网络服务一切正常。以下是我的代码。
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapResponse.getSOAPPart().getContent();
System.out.print("\nResponse SOAP Message = \n");
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
}
我不太确定变压器。我现在需要做的是遍历结果并寻找下面的标记。
<Table diffgr:id="Table1" >
之后会有很少的标签,例如
<rID>1212</rID>
<sNo>15677</sNo>
那么有什么需要将它转换成字符串的最佳方法是必要的?
答案 0 :(得分:1)
转换为文档(未选中):
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMResult result = new DOMResult();
transformer.transform(sourceContent, result);
Document doc = (Document) result.getNode();
在文档中查找:
String tag = "Table";
String attr = "diffgr:id";
String attrValue = "Table1";
NodeList list = doc.getElementsByTagName("Table");
Element tableNode = null;
for (int i = 0; i < list.getLength(); i++) {
tableNode = ((Element) list.item(i));
String currentAttrValue = tableNode.getAttribute(attr);
if (attrValue.equals(currentAttrValue)) {
break;
}
}
String childTag1 = "rID";
String childTag2 = "sNo";
Node child1 = (Node) tableNode.getElementsByTagName(childTag1).item(0);
Node child2 = (Node) tableNode.getElementsByTagName(childTag2).item(0);
String rIDValue = child1.getTextContent();
String sNoValue = child1.getTextContent();
答案 1 :(得分:0)
您的代码Transformer transformer = transformerFactory.newTransformer();
正在创建一个&#34;身份转换器&#34;它将输入复制不变,因此它并没有真正做任何有用的事情。你想要的是一个真实的(XSLT)变换器,它实际上提取了你需要的信息:类似
<xsl:template match="/">
<xsl:copy-of select="//Table[@diffgr:id='Table1']"/>
</xsl:template>
您可以使用transformerFactory.newTemplates()进行编译。