需要变压器功能

时间:2014-05-11 16:05:38

标签: java xml web-services

我链接到网络服务一切正常。以下是我的代码。

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>

那么有什么需要将它转换成字符串的最佳方法是必要的?

2 个答案:

答案 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()进行编译。