org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in

调用接口报错:

endpoint:http://localhost:8080/U3Interface/services/FindData?wsdl;KEY:ctcc2u3BZhLnV; type:CT3AZ; startDate:2017-04-01 09:23:33; args.length:5

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}hostname:we-pc


org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2973)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.ketech.test.TestfindData.main(TestfindData.java:36)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2

JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [util.c:838]

 

 

1、把文件 server-config.wsdd 中 style 和 use 去掉即可;

 

<service name="FindData" provider="java:RPC" style="document" use="literal">
    <parameter name="className" value="com.ketech.Interface.FindData"/>
    <parameter name="allowedMethods" value="findDataProcess"/>
    <parameter name="scope" value="Application"/>
</service>

 

 

 

 

下面是调用类:

 

 

package com.ketech.test;


import java.util.Vector;


import javax.xml.namespace.QName;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;


import com.ketech.util.EncryptUtil;
import com.ketech.util.ObjectSerialize;


public class TestfindData {

public static void main(String[] args) {
args = new String[] { "http://localhost:8080/U3Interface/services/FindData?wsdl", "ctcc2u3YXZhLnV","CTCAZ", "2017-04-01 09:23:33","2017-04-02 08:39:20"};

if(args.length<3){
System.out.println("sample : url key systemType quantity");
return;
}

String endpoint = args[0];
String KEY = args[1];
String type = args[2];
String startDate=args[3];
String endDate=args[4];

System.out.println("endpoint:"+endpoint+";KEY:"+KEY+"; type:"+type+"; startDate:"+startDate +"; args.length:"+args.length);
Service service = new Service();
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
//call.setReturnClass(org.w3c.dom.Element.class);
//call.setReturnQName("http://xml.apache.org/xml-soap");
call.setOperationName(new QName("findDataProcess"));


String ret = (String) call.invoke(new Object[] {type,startDate,endDate});
System.out.println("****************!!!!!!*********" + ret + "'");
byte[] bb = EncryptUtil.decryptData(ret, KEY);
@SuppressWarnings("unchecked")
Vector<Vector> v = (Vector<Vector>) ObjectSerialize.deserialize(bb);
System.out.println("##:"+v);
for (int i = 0; i < v.size(); i++) {
Vector vi = (Vector) v.get(i);
System.out.println(vi);
System.out.println(vi.get(vi.size() - 2));
}
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}



}


}

 

### 回答1: org.xml.sax.SAXException: invalid element in 是指在解析XML文档时遇到了无效的元素。在XML文档中,只有预定义的元素才是有效的,如果在解析过程中遇到了同样的元素,或者在文档中遇到了未定义的元素,就会抛出这个异常。 这个异常通常是由于以下几个原因引起的: 1. XML文档中包含了未定义的元素:在XML文件中只有预定义的元素是有效的,如果文档包含了未定义的或拼写错误的元素标签,就会抛出这个异常。 2. XML文档中存在嵌套错误:如果XML文档中的元素嵌套方式不正确,比如标签没有正确闭合或者嵌套顺序错误,就会导致解析器无法正确处理,进而抛出这个异常。 3. XML文档缺少必需的元素:XML文档可能需要某些元素来满足DTD(文档类型定义)或XML Schema规范,如果缺少了必需的元素,就会发生这个异常。 解决这个异常的方法包括: 1. 核对XML文档是否符合预定义的元素规范,检查是否存在未定义或拼写错误的元素标签。 2. 检查XML文档的嵌套结构是否正确,确保每个元素都正确地闭合并符合正确的嵌套顺序。 3. 检查XML文档是否包含了所有必需的元素,可以参考DTD或XML Schema规范来确认是否缺少了必需的元素。 总之,当出现org.xml.sax.SAXException: invalid element in异常时,需要仔细检查XML文档的内容和结构,遵循XML规范,确保所有的元素都是有效的,并且符合DTD或XML Schema的要求。 ### 回答2: org.xml.sax.saxexception: invalid element in 是一个 SAX 异常,表示在解析 XML 文件时遇到了无效的元素。 这个异常通常出现在使用 SAX 解析器解析 XML 文件时,当遇到无效的元素(即在 XML 文档中未定义的元素)时,就会抛出这个异常。 在 XML 中,每个元素都必须遵循其定义的规则和结构。如果解析器在解析 XML 文件时发现一个元素未被定义,就会抛出“invalid element in”异常。 为了解决这个异常,我们需要检查 XML 文件中出现的元素,确保它们都是在文档中已经定义的。可以通过查看对应的 DTD(文档类型定义)或 XML Schema 来检查定义的元素。 另外,还可以使用更具有容错性的 XML 解析器,如 DOM(文档对象模型)解析器。与 SAX 解析器不同,DOM 解析器会将整个 XML 文档加载到内存中,可以更容易地检测到无效的元素并进行处理。 总结:org.xml.sax.saxexception: invalid element in 是一个 SAX 异常,表示在解析 XML 文件时遇到了无效的元素。解决这个异常的方法是检查 XML 文件中的元素是否都已经在文档中定义,并考虑使用容错性更强的解析器。 ### 回答3: org.xml.sax.SAXException是一个常见的异常类,通常在处理XML文档时遇到问题时会抛出该异常。在这个异常信息中,我们看到了"invalid element"的字样。 "invalid element"的意思是无效元素,也就是说,XML文档中包含了一个不被允许的或者无法解析的元素。 在处理XML文档时,通常需要遵循一定的规范,比如使用DTD(文档类型定义)或者XML Schema来定义XML文档的结构和元素。如果XML文档中包含了未定义的元素,或者元素的位置不正确,就会抛出该异常。 要解决这个异常,我们需要检查XML文档中的元素是否符合规范。首先,可以查看异常信息中提供的具体元素名称,找到这个无效元素在XML文档中的位置。然后,我们可以参考XML文档的定义,检查这个元素是否被正确定义,或者是否放置在正确的位置。 如果元素在XML文档中是合法的,那可能是因为解析器无法正确解析该元素。这种情况下,我们可以尝试使用其他的解析器,或者更新现有的解析器,以确保能够正常解析该元素。 总之,当我们遇到"org.xml.sax.SAXException: invalid element"这个异常时,就意味着XML文档中存在不被允许或者无法解析的元素。我们需要仔细检查这个元素是否在XML文档定义中被正确定义或者是否放置在正确的位置,并尝试使用其他解析器或更新现有解析器来解决这个问题。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值