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 Jack Byrne <jb...@aol.com> on 2003/02/17 13:48:09 UTC
Controlling namespace prefixes in SAAJ
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>
Re: Controlling namespace prefixes in SAAJ
Posted by Scott Nichol <sn...@scottnichol.com>.
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.