Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
Java JaxB解组器错误_Java_Jaxb_Unmarshalling - Fatal编程技术网

Java JaxB解组器错误

Java JaxB解组器错误,java,jaxb,unmarshalling,Java,Jaxb,Unmarshalling,我正在尝试使用JaxB解组一个基本的XML文件,但是代码有问题。封送拆收器运行正常,但解组拆收器不会返回XML文件中的内容,而是返回com.project.test。Jaxb@094jufd34c。(类的名称后跟带有字母和数字随机组合的“@”)。下面是代码。谢谢你的帮助和建议 XML注释类: @XmlRootElement public class Jaxb { String newString; public String getNewString() { return newStr

我正在尝试使用JaxB解组一个基本的XML文件,但是代码有问题。封送拆收器运行正常,但解组拆收器不会返回XML文件中的内容,而是返回
com.project.test。Jaxb@094jufd34c
。(类的名称后跟带有字母和数字随机组合的“@”)。下面是代码。谢谢你的帮助和建议

XML注释类:

@XmlRootElement
public class Jaxb {
String newString;

public String getNewString() {
    return newString;
}

@XmlElement
public void setNewString(String newString) {
    this.newString = newString;
}
}
马歇尔:

public class Marshal {
Jaxb newWindow = new Jaxb();
String xmlString;

void marshal(String[] args) {

    xmlString="a,b,c";

    newWindow.setNewString(xmlString);

 try {

        File file = new File("newXml.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

        // output pretty printed
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        jaxbMarshaller.marshal(newWindow, file);
        jaxbMarshaller.marshal(newWindow, System.out);

          } catch (JAXBException e) {
        e.printStackTrace();
          }
}
}
public class unmarshal {

static String unMarshal() {
  String unmarshString="";
  try {

        File x = new File("newXml.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Jaxb newUnmarshal = (Jaxb) jaxbUnmarshaller.unmarshal(x);

        unmarshString = newUnmarshal.toString();

      } catch (JAXBException e) {
        e.printStackTrace();
        System.out.print("error");
      }
  return unmarshString;
}
}
解组器:

public class Marshal {
Jaxb newWindow = new Jaxb();
String xmlString;

void marshal(String[] args) {

    xmlString="a,b,c";

    newWindow.setNewString(xmlString);

 try {

        File file = new File("newXml.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

        // output pretty printed
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        jaxbMarshaller.marshal(newWindow, file);
        jaxbMarshaller.marshal(newWindow, System.out);

          } catch (JAXBException e) {
        e.printStackTrace();
          }
}
}
public class unmarshal {

static String unMarshal() {
  String unmarshString="";
  try {

        File x = new File("newXml.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Jaxb.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Jaxb newUnmarshal = (Jaxb) jaxbUnmarshaller.unmarshal(x);

        unmarshString = newUnmarshal.toString();

      } catch (JAXBException e) {
        e.printStackTrace();
        System.out.print("error");
      }
  return unmarshString;
}
}

com.project.test。Jaxb@094jufd34c
Jaxb
类上默认的
toString()
实现的输出。覆盖
toString
以在需要时输出,例如

public String toString() {
    return newString;
}
然而,我猜想,由于您的
unmarshal
方法专门返回一个字符串,那么您真正想要做的就是
unmarshString=newUnmarshal.getNewString()
,而不是
unmarshString=unmarshal.toString()

类的名称后跟带有字母和数字随机组合的“@”

它不是随机的,它是由

返回对象的字符串表示形式。通常,toString方法返回一个“文本表示”此对象的字符串。结果应该是一个简洁但信息丰富的表示,便于一个人阅读。建议所有子类重写此方法

class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

这与XML或JAXB无关,这只是如何在类上定义
toString