The XmlService provides operations to manipulate XML structures. Its WSDL is located at http://server:port/XServices/XmlService?wsdl
Insert an xml fragment into other elements specified by an XPath expression. This operation is namespace aware. Sample request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:insertNodes> <sourcexml><![CDATA[ <books> <author> <name>Mensiok</name> <surname>Bello</surname> </author> <author> <name>Schwab</name> <surname>Rumsau</surname> </author> <author> <name>Dollibert</name> <surname>Rach</surname> </author> </books> ]]></sourcexml> <encoding>utf-8</encoding> <namespaceList> <!--Zero or more repetitions:--> <namespace> <prefix></prefix> <uri></uri> </namespace> </namespaceList> <xpath>/books/author</xpath> <!--Optional:--> <xmldata><![CDATA[<age namespace="http://btx"/>]]></xmldata> </ws:insertNodes> </soapenv:Body> </soapenv:Envelope>
Sample response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:insertNodesResponse xmlns:ns2="http://ws.xservices.brutex.net"> <return><![CDATA[<?xml version='1.0' encoding='UTF-8'?> <books> <author> <name>Mensiok</name> <surname>Bello</surname> <age namespace="http://btx"/></author> <author> <name>Schwab</name> <surname>Rumsau</surname> <age namespace="http://btx"/></author> <author> <name>Dollibert</name> <surname>Rach</surname> <age namespace="http://btx"/></author> </books>]]></!></return> </ns2:insertNodesResponse> </soap:Body> </soap:Envelope>
Insert an xml fragment into xml resource (i.e. file, URL) specified by an XPath expression. This operation is namespace aware. Sample request:
...
Sample response:
...
Replace an xml fragment with another xml fragment. This operation is namespace aware. Sample request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:replaceNodes> <sourcexml><![CDATA[ <books> <author> <name>Mensiok</name> <surname>Bello</surname> </author> <author> <name>Schwab</name> <surname>Rumsau</surname> </author> <author> <name>Dollibert</name> <surname>Rach</surname> </author> </books> ]]> </sourcexml> <encoding>utf-8</encoding> <namespaceList> <!--Zero or more repetitions:--> <namespace> <prefix></prefix> <uri></uri> </namespace> </namespaceList> <xpath>*/name[text()='Schwab']</xpath> <!--Optional:--> <xmldata><![CDATA[<name>Meyer</name><age>45</age><!--edited here-->]]></xmldata> </ws:replaceNodes> </soapenv:Body> </soapenv:Envelope>
Sample response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:replaceNodesResponse xmlns:ns2="http://ws.xservices.brutex.net"> <return><![CDATA[<?xml version='1.0' encoding='UTF-8'?> <books> <author> <name>Mensiok</name> <surname>Bello</surname> </author> <author> <name>Meyer</name><age>45</age><!--edited here--> <surname>Rumsau</surname> </author> <author> <name>Dollibert</name> <surname>Rach</surname> </author> </books>]]></return> </ns2:replaceNodesResponse> </soap:Body> </soap:Envelope>
Replace an xml fragment with another xml fragment read from a resource (i.e. file, URL). This operation is namespace aware. Sample request:
...
Sample response:
...
Selects xmlfragements, nodes, attribute or text from xml data using an XPath expression. This function requires namespaces to be declared correctly.
Sample request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:selectXPath> <sourcexml> <![CDATA[<notes xmlns="http://demo.brutex.net" xmlns:bx="http://bx.brutex.net"> <bx:note> <to>Lena</to> <from>Jani</from> <heading>Reminder ABC</heading> <body>Don't forget me this weekend!</body> </bx:note> <note> <to>John</to> <from>Lena</from> <heading>Call Mr. ABC</heading> <body>Please call back</body> </note> <bx:note> <to>Brian</to> <from>JJohn</from> <heading>Reminder XServices</heading> <body>How to use selectXPath?</body> </bx:note> </notes> ]]> </sourcexml> <encoding>utf-8</encoding> <namespaceList> <namespace> <prefix>ns</prefix> <uri>http://demo.brutex.net</uri> </namespace> <namespace> <prefix>bx</prefix> <uri>http://bx.brutex.net</uri> </namespace> </namespaceList> <xpath>*/bx:note/ns:heading/text()</xpath> </ws:selectXPath> </soapenv:Body> </soapenv:Envelope>
Sample response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:selectXPathResponse xmlns:ns2="http://ws.xservices.brutex.net"> <return> <stringlist>Reminder ABC</stringlist> <stringlist>Reminder XServices</stringlist> <size>2</size> </return> </ns2:selectXPathResponse> </soap:Body> </soap:Envelope>
Set an attribute into elements matched by an XPath expression.
Sample request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:setAttribute> <sourcexml> <![CDATA[<notes xmlns="http://demo.brutex.net"> <note> <to>Lena</to> <from>Jani</from> <heading>Reminder ABC</heading> <body>Don't forget me this weekend!</body> </note> <note> <to>John</to> <from>Lena</from> <heading>Call Mr. ABC</heading> <body>Please call back</body> </note> </notes> ]]></sourcexml> <encoding>utf-8</encoding> <!--Optional:--> <namespaceList> <!--Zero or more repetitions:--> <namespace> <prefix>bx</prefix> <uri>http://demo.brutex.net</uri> </namespace> </namespaceList> <xpath>*/bx:note</xpath> <attribute> <name>priority</name> <!--Optional:--> <value>high</value> </attribute> </ws:setAttribute> </soapenv:Body> </soapenv:Envelope>
Sample response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:setAttributeResponse xmlns:ns2="http://ws.xservices.brutex.net"> <return><![CDATA[<?xml version='1.0' encoding='UTF-8'?> <notes xmlns="http://demo.brutex.net"> <note xmlns:axis2ns16="http://demo.brutex.net" axis2ns16:priority="high"> <to>Lena</to> <from>Jani</from> <heading>Reminder ABC</heading> <body>Don't forget me this weekend!</body> </note> <note xmlns:axis2ns17="http://demo.brutex.net" axis2ns17:priority="high"> <to>John</to> <from>Lena</from> <heading>Call Mr. ABC</heading> <body>Please call back</body> </note> </notes>]]></return> </ns2:setAttributeResponse> </soap:Body> </soap:Envelope>
Simply wraps any data fragment into <![CDATA[ ... ]]> section. This can be useful if you want to preserve indentation or line breaks.
Sample request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:wrapInCDATA> <data>Hello World, here is some <xml> data</data> </ws:wrapInCDATA> </soapenv:Body> </soapenv:Envelope>
Sample response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:wrapInCDATAResponse xmlns:ns2="http://ws.xservices.brutex.net"> <return><![CDATA[Hello World, here is some <xml> data]]></return> </ns2:wrapInCDATAResponse> </soap:Body> </soap:Envelope>