You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Scott Nichol <sn...@scottnichol.com> on 2003/04/01 16:56:12 UTC
Re: Controlling namespace prefixes in SAAJ
SAAJ questions should be posted to either a general purpose SOAP list
or a list for a product that implements SAAJ, such as Axis.
On 17 Feb 2003 at 12:48, Jack Byrne wrote:
> Hello,
>
> My sample code below is producing the following XML
>
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Header>
> <Header1 attr1="value1" attr2="value2"
> xmlns="http://mydomain.com/header1"/>
> <Header2 xmlns="http://mydomain.com/header2">
> <ns1:child1 xmlns:ns1="http://mydomain.com/child1">
> <ns1:child2>Value for Child2</ns1:child2>
> <child3 xmlns="">Value for Child3</child3>
> </ns1:child1>
> </Header2>
> </soapenv:Header>
> <soapenv:Body>
> ................
> </soapenv:Body>
> </soapenv:Envelope>
>
> private void createSOAPHeader(boolean test) throws Exception {
> String property = null;
>
> // Create the SOAP envelope
> SOAPPart soapPart = message.getSOAPPart();
> envelope = soapPart.getEnvelope();
>
> // Create the SOAP Header within the envelope
> SOAPHeader header = envelope.getHeader();
>
> // Create the Header1 Element and add it
> Name header1 = envelope.createName("Header1", "",
> "http://mydomain.com/header1");
> SOAPHeaderElement headerElement = header.addHeaderElement(header1);
>
> // Add some attributes
> Name attr1 = envelope.createName("attr1");
> headerElement.addAttribute(attr1, "value1");
> Name attr2 = envelope.createName("attr2");
> headerElement.addAttribute(attr2, "value2");
>
> // Create the Header2 Element and add it
> Name header2 = envelope.createName("Header2", "",
> "http://mydomain.com/header2");
> headerElement = header.addHeaderElement(header2);
>
> // Create some child Elements for Header2
> Name name = envelope.createName("child1", "child1_ns",
> "http://mydomain.com/child1");
> SOAPElement child1 = headerElement.addChildElement(name);
>
> // Create child2 element
> name = envelope.createName("child2", "child1_ns",
> "http://mydomain.com/child1");
> SOAPElement child2 = child1.addChildElement(name);
> child2.addTextNode("Value for Child2");
>
> // Create child3 element
> name = envelope.createName("child3");
> SOAPElement child3 = child1.addChildElement(name);
> child3.addTextNode("Value for Child3");
> }
>
> Questions,
>
> 1) The namespace prefix is "ns1", I would like it to be "child1_ns" -
> how can I control this
> 2) How can I omit the namespace prefix before an Element name for example
>
> how can I get encode
> <ns1:child1 xmlns:ns1="http://mydomain.com/child1">
> to be
> <child1 xmlns:ns1="http://mydomain.com/child1">
>
> 3) How can I produce the following output
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Header>
> <Header1 attr1="value1" attr2="value2"
> xmlns="http://mydomain.com/header1"/>
> <Header2 xmlns="http://mydomain.com/header2">
> <child1 xmlns:ns_child1="http://mydomain.com/child1">
> <ns_child1:child2>Value for Child2</ns_child1:child2>
> <child3 xmlns="">Value for Child3</child3>
> </ns_child1:child1>
> </Header2>
> </soapenv:Header>
> <soapenv:Body>
> ........................
> </soapenv:Body>
> </soapenv:Envelope>
>
>
Scott Nichol
Do not reply directly to this e-mail address,
as it is filtered to only receive e-mail from
specific mailing lists.