Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAXB问题--意外元素_Jaxb_Jboss5.x - Fatal编程技术网

JAXB问题--意外元素

JAXB问题--意外元素,jaxb,jboss5.x,Jaxb,Jboss5.x,我的JAXB解析器今天突然停止工作。它工作了好几个星期。我得到以下信息。我已经好几个星期没有更改这个代码了。不知道这个设置是否好 编辑2:谁能帮帮我!我想不出来 编辑1: 我运行下面相同代码的验收测试运行良好。我相信这是一个好消息 类加载问题。我在JDK中使用JAXB和StAX。然而,当我部署到JBoss5.1时,我得到了下面的错误。使用1.6.0_26(本地)和1.6.0_30(开发服务器)。仍然对解决方案感到困惑 意外元素(uri:,本地:“lineEquipmentRecord”)

我的JAXB解析器今天突然停止工作。它工作了好几个星期。我得到以下信息。我已经好几个星期没有更改这个代码了。不知道这个设置是否好


编辑2:谁能帮帮我!我想不出来



编辑1: 我运行下面相同代码的验收测试运行良好。我相信这是一个好消息 类加载问题。我在JDK中使用JAXB和StAX。然而,当我部署到JBoss5.1时,我得到了下面的错误。使用1.6.0_26(本地)和1.6.0_30(开发服务器)。仍然对解决方案感到困惑


意外元素(uri:,本地:“lineEquipmentRecord”)。预期 元素是

这是我的解组类:

import java.io.InputStream;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.NoSuchElementException;
导入javax.xml.bind.JAXBContext;
导入javax.xml.bind.JAXBException;
导入javax.xml.bind.Unmarshaller;
导入javax.xml.bind.ValidationEvent;
导入javax.xml.bind.ValidationEventHandler;
导入javax.xml.stream.FactoryConfigurationError;
导入javax.xml.stream.XMLInputFactory;
导入javax.xml.stream.XMLStreamConstants;
导入javax.xml.stream.XMLStreamException;
导入javax.xml.stream.XMLStreamReader;
公共类PartialUnmarshaller{
XMLStreamReader;
课堂讨论;
解组器解组器;
公共PartialUnmarshaller(InputStream stream,Class clazz)抛出XMLStreamException、FactoryConfigurationError、JAXBEException{
this.clazz=clazz;
this.unmarshaller=JAXBContext.newInstance(clazz.createUnmarshaller();
unmarshaller.setEventHandler(新的ValidationEventHandler(){
@凌驾
公共布尔handleEvent(ValidationEvent事件){
System.out.println(event.getMessage());
返回true;
}
});
this.reader=XMLInputFactory.newInstance().createXMLStreamReader(流);
/*忽略标题*/
skipElements(XMLStreamConstants.START\u文档);
/*忽略根元素*/
reader.nextTag();
/*如果没有标记,则忽略根元素的结尾*/
skipElements(XMLStreamConstants.END_元素);
}
public T next()抛出XMLStreamException,JAXBEException{
如果(!hasNext())
抛出新的NoTouchElementException();
T value=unmarshaller.unmarshal(reader,clazz.getValue();
skipElements(XMLStreamConstants.CHARACTERS、XMLStreamConstants.END_元素);
返回值;
}
公共布尔值hasNext()引发XMLStreamException{
返回reader.hasNext();
}
public void close()引发XMLStreamException{
reader.close();
}
私有void skipElements(整数…元素)抛出XMLStreamException{
int eventType=reader.getEventType();
列表类型=新的ArrayList(Arrays.asList(elements));
while(types.contains(eventType))
eventType=reader.next();
}
}
该类的用途如下:

List lenList=new ArrayList();
PartialUnmarshaller pu=新PartialUnmarshaller(
是,MyClass.class);
while(pu.hasNext()){
lenList.add(pu.next());
}
正在解组的XML:


333
333
4444
1.
xxxx
伦恩
111
111
2222
0
xxxx
伦恩
最后,这里是MyClass:

import javax.xml.bind.annotation.xmlement;
导入javax.xml.bind.annotation.XmlRootElement;
/**
*该类用作容纳Martens的信封
*线路设备信息。
*@author-spgezf
*
*/
@XmlRootElement(name=“lineEquipmentRecord”)
公共类MyClass{
专用串电话;
专用串电话;
专用电话线;
私有字符串后缀;
私服;
私有字符串组标识符;
公共MyClass(){
}
//能手和二传手。
@XmlElement(name=“电话NPA”)
公共字符串getTelephoneNpa(){
返回电话NPA;
}
公共电话号码(字符串电话号码NPA){
this.telephoneNpa=telephoneNpa;
}
@xmlement(name=“telephoneNxx”)
公共字符串getTelephoneNxx(){
返回电话nxx;
}
公共void setTelephoneNxx(字符串电话nxx){
this.telephoneNxx=电话nxx;
}
@xmlement(name=“电话线”)
公共字符串getTelephoneLine(){
返回电话线;
}
公用电话线(串电话线){
this.telephoneLine=电话线;
}
@xmlement(name=“telephoneSuffix”)
公共字符串getTelephoneSuffix(){
返回电话后缀;
}
公共void setTelephoneSuffix(字符串后缀){
this.telephoneSuffix=电话后缀;
}
@XmlElement(name=“nodeAddress”)
公共字符串getNodeAddress(){
返回nodeadress;
}
公共无效setNodeAddress(字符串nodeAddress){
this.nodeadress=nodeadress;
}
@xmlement(name=“groupIdentifier”)
公共字符串getGroupIdentifier(){
返回组标识符;
}
public void setGroupIdentifier(字符串groupIdentifier){
this.groupIdentifier=groupIdentifier;
}
}

你的
PartialUnmarshaller
代码对我有用。下面是另一个版本,它更改了
skipElements
方法,可能会更好地工作

import java.io.InputStream;
导入java.util.NoSuchElementException;
导入javax.xml.bind.*;
导入javax.xml.stream.*;
公共类PartialUnmarshaller{
XMLStreamReader;
课堂讨论;
解组器解组器;
公共PartialUnmarshaller(InputStream stream,Class clazz)抛出XMLStreamException、FactoryConfigurationError、JAXBEException{
this.clazz=clazz;