Java 如何使用自定义SOAPHandler添加元素

Java 如何使用自定义SOAPHandler添加元素,java,xml,soaphandler,Java,Xml,Soaphandler,这是与一个问题有关的。我已经解决了主要问题,因为我已经更新了大部分代码,但我仍然有一个问题。如何让自定义SOAPHandler类向SOAP消息添加新元素?我需要在邮件中添加用户名和密码。如果我使用: public boolean handleMessage(SOAPMessageContext context) { SOAPMessage msg = context.getMessage(); SOAPPart part = msg.getSOAPPart(); SOAPEnvel

这是与一个问题有关的。我已经解决了主要问题,因为我已经更新了大部分代码,但我仍然有一个问题。如何让自定义SOAPHandler类向SOAP消息添加新元素?我需要在邮件中添加用户名和密码。如果我使用:

public boolean handleMessage(SOAPMessageContext context) {

  SOAPMessage msg = context.getMessage();
  SOAPPart part = msg.getSOAPPart();
  SOAPEnvelope envelope = part.getEnvelope();

  .... //additional header information

  SOAPElement element.addChildElement("Username", "sse");
  element.addTextNode("user1");
  element.addChildElement("Password", "sse");
  element.addTextNode("1234");
}
我以这样的方式结束,即标记是闭合的,值不是封闭的:

<sse:Username/>user1
<sse:Password/>1234
user1
1234
我希望用户名和密码的格式如下:

<sse:Username>user1</sse:Username>
<sse:Password>1234</sse:Password>
user1
1234
如何获取元素中包含的值(user1和1234)?

试试以下方法:

element.addChildElement("Password", "sse").addTextNode("1234");

除了这条线

SOAPElement element.addChildElement("Username", "sse");
不是有效的java,您需要记住,
addChildElement
返回新创建的子元素,并且需要将文本节点添加到该子元素,而不是父元素。您的代码所做的只是添加一个子节点(空),然后添加一个文本节点,然后添加另一个空子节点,然后添加另一个文本节点

你可能想要这个:

element.addChildElement("Username", "sse").addTextNode("user1");
element.addChildElement("Password", "sse").addTextNode("1234");
最后,与来自java的SeeWeb服务交谈只会导致眼泪和头发脱落。Microsoft SEE web服务不符合标准(我知道这令人震惊)