1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
|
package test.saaj;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Attr;
import org.w3c.dom.Text;
import org.w3c.dom.NodeList;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPPart;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import java.io.ByteArrayInputStream;
public class TestText extends junit.framework.TestCase {
public TestText(String name) {
super(name);
}
// Test SAAJ addTextNode performance
public void testAddTextNode() throws Exception {
SOAPFactory soapFactory = SOAPFactory.newInstance();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
// Create the base element
Name bodyName = soapFactory.createName("VBGenReceiver", "xsi",
"http://www.w3.org/2001/XMLSchema-instance");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
// Create the MetaData Tag
Name name = soapFactory.createName("MetaData");
SOAPElement metaData = bodyElement.addChildElement(name);
//Create the SKey Tag
name = soapFactory.createName("SKey");
SOAPElement sKey = metaData.addChildElement(name);
sKey.addTextNode("SKEY001");
//Create Object Tag
name = soapFactory.createName("Object");
SOAPElement object = bodyElement.addChildElement(name);
//Create Book ID Tag
name = soapFactory.createName("BookID");
SOAPElement bookID = object.addChildElement(name);
bookID.addTextNode("BookID002");
//Create OrderID tag
name = soapFactory.createName("OrderID");
SOAPElement orderID = object.addChildElement(name);
orderID.addTextNode("OrderID003");
//create PurchaseID tage
name = soapFactory.createName("PurchaseID");
SOAPElement purchaseID = object.addChildElement(name);
purchaseID.addTextNode("PurchaseID005");
//create LanguageID Tag
name = soapFactory.createName("LanguageID");
SOAPElement languageID = object.addChildElement(name);
languageID.addTextNode("LanguageID004");
//create LanguageID Tag
name = soapFactory.createName("LanguageName");
SOAPElement languageName = object.addChildElement(name);
languageName.addTextNode("LanguageName006");
//create LanguageID Tag
name = soapFactory.createName("Title");
SOAPElement title = object.addChildElement(name);
title.addTextNode("Title007");
//create LanguageID Tag
name = soapFactory.createName("Author");
SOAPElement author = object.addChildElement(name);
author.addTextNode("Author008");
//create LanguageID Tag
name = soapFactory.createName("Format");
SOAPElement format = bodyElement.addChildElement(name);
//create LanguageID Tag
name = soapFactory.createName("Type");
SOAPElement formatType = format.addChildElement(name);
formatType.addTextNode("Type009");
//create LanguageID Tag
name = soapFactory.createName("Delivery");
SOAPElement delivery = bodyElement.addChildElement(name);
//create LanguageID Tag
name = soapFactory.createName("Name");
SOAPElement delName = delivery.addChildElement(name);
delName.addTextNode("Name010");
//create LanguageID Tag
name = soapFactory.createName("Address1");
SOAPElement address1 = delivery.addChildElement(name);
address1.addTextNode("Address1011");
//create LanguageID Tag
name = soapFactory.createName("Address2");
SOAPElement address2 = delivery.addChildElement(name);
address2.addTextNode("Address2012");
//create LanguageID Tag
name = soapFactory.createName("City");
SOAPElement city = delivery.addChildElement(name);
city.addTextNode("City013");
//create LanguageID Tag
name = soapFactory.createName("State");
SOAPElement state = delivery.addChildElement(name);
state.addTextNode("State014");
//create LanguageID Tag
name = soapFactory.createName("PostalCode");
SOAPElement postalCode = delivery.addChildElement(name);
postalCode.addTextNode("PostalCode015");
System.out.println("The message is lll:\n");
message.writeTo(System.out);
}
public void testTraverseDOM() throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<book year=\"1992\">\n" +
" <title>Advanced Programming in the Unix environment</title>\n" +
" <author><last>Stevens</last><first>W.</first></author>\n" +
" <publisher>Addison-Wesley</publisher>\n" +
" <price>65.95</price>\n" +
"</book>\n" +
"";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document payload = builder.parse(new ByteArrayInputStream(xml.getBytes()));
MessageFactory soapMsgFactory = MessageFactory.newInstance();
SOAPMessage soapMsg = soapMsgFactory.createMessage();
SOAPPart soapPart = soapMsg.getSOAPPart();
SOAPEnvelope soapEnv = soapPart.getEnvelope();
SOAPBody soapBody = soapEnv.getBody();
soapBody.addDocument(payload);
System.out.println("***************");
soapMsg.writeTo(System.out);
processNode(soapPart);
}
private void processNode(Node currentNode) {
switch (currentNode.getNodeType()) {
// process a Document node
case Node.DOCUMENT_NODE:
Document doc = (Document) currentNode;
System.out.println("Document node: " + doc.getNodeName() +
"\nRoot element: " +
doc.getDocumentElement().getNodeName());
processChildNodes(doc.getChildNodes());
break;
// process an Element node
case Node.ELEMENT_NODE:
System.out.println("\nElement node: " +
currentNode.getNodeName());
NamedNodeMap attributeNodes =
currentNode.getAttributes();
for (int i = 0; i < attributeNodes.getLength(); i++) {
Attr attribute = (Attr) attributeNodes.item(i);
System.out.println("\tAttribute: " +
attribute.getNodeName() + " ; Value = " +
attribute.getNodeValue());
}
processChildNodes(currentNode.getChildNodes());
break;
// process a text node and a CDATA section
case Node.CDATA_SECTION_NODE:
case Node.TEXT_NODE:
Text text = (Text) currentNode;
if (!text.getNodeValue().trim().equals(""))
System.out.println("\tText: " +
text.getNodeValue());
break;
}
}
private void processChildNodes(NodeList children) {
if (children.getLength() != 0)
for (int i = 0; i < children.getLength(); i++)
processNode(children.item(i));
}
public static void main(String[] args) throws Exception {
TestText tester = new TestText("TestEnvelope");
tester.testAddTextNode();
}
}
|