如何在JavaSpring引导上将xml转换为对象

如何在JavaSpring引导上将xml转换为对象,java,xml,object,spring-boot,Java,Xml,Object,Spring Boot,您好,我正在尝试转换包含大量对象的xml,我得到一个 错误消息:根元素后面的文档中的标记必须格式正确 XML: 主要代码: StringReader reader = new StringReader(response); String response = restTemplate.getForObject(url, String.class); ... JAXBContext jaxbContext = JAXBContext.newInstance(Model.class);

您好,我正在尝试转换包含大量对象的xml,我得到一个 错误消息:根元素后面的文档中的标记必须格式正确

XML:

主要代码:

StringReader reader = new StringReader(response);
String response = restTemplate.getForObject(url, String.class);
...

 JAXBContext jaxbContext = JAXBContext.newInstance(Model.class);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
            Model recordes = (Model) unmarshaller.unmarshal(reader);
解组异常: 文档中根元素后面的标记必须格式正确

只包含一项的xml代码可以工作

我缺少了什么,需要做什么才能获得元素(项)对象列表而不出错?

int PRETTY\u PRINT\u INDENT\u FACTOR=4;
int PRETTY_PRINT_INDENT_FACTOR = 4;
String TEST_XML_STRING =
        "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to 
JSON</test>";

try {
     JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
     String jsonPrettyPrintString = 
xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
     System.out.println(jsonPrettyPrintString);
} catch (JSONException je) {
     System.out.println(je.toString());
}
字符串测试\u XML\u字符串= “把这个给我 JSON”; 试一试{ JSONObject xmlJSONObj=XML.toJSONObject(测试XML字符串); 字符串jsonPrettyPrintString= toString(漂亮的打印缩进系数); System.out.println(jsonPrettyPrintString); }捕获(JSONException je){ System.out.println(je.toString()); }

希望这会对您有所帮助,在XML文件中使用jar文件,您的根元素是
标记,因此请更正XML或更正模型类以使其正常工作

要了解有关错误的更多信息,请检查此

编辑

您可以使用此工具生成POJO:

以下是上述XML的POJO类:

public class MyXML
{
    private String string; // Change the class as String is Wrapper class

    public String getString ()
    {
        return string;
    }

    public void setString (String string)
    {
        this.string = string;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [string = "+string+"]";
    }
}
字符串类:

public class String // Change this className as String is Wrapper class in java
{
    private Item[] Item;

    private String xmlns;

    public Item[] getItem ()
    {
        return Item;
    }

    public void setItem (Item[] Item)
    {
        this.Item = Item;
    }

    public String getXmlns ()
    {
        return xmlns;
    }

    public void setXmlns (String xmlns)
    {
        this.xmlns = xmlns;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [Item = "+Item+", xmlns = "+xmlns+"]";
    }
}
项目类别

public class Item
{
    private String Name;

    private String Source;

    private String End;

    private String CodeNo;

    private String Start;

    private String Account;

    private String ItemKey;

    private String Note;

    private String customNumber;

    public String getName ()
    {
        return Name;
    }

    public void setName (String Name)
    {
        this.Name = Name;
    }

    public String getSource ()
    {
        return Source;
    }

    public void setSource (String Source)
    {
        this.Source = Source;
    }

    public String getEnd ()
    {
        return End;
    }

    public void setEnd (String End)
    {
        this.End = End;
    }

    public String getCodeNo ()
    {
        return CodeNo;
    }

    public void setCodeNo (String CodeNo)
    {
        this.CodeNo = CodeNo;
    }

    public String getStart ()
    {
        return Start;
    }

    public void setStart (String Start)
    {
        this.Start = Start;
    }

    public String getAccount ()
    {
        return Account;
    }

    public void setAccount (String Account)
    {
        this.Account = Account;
    }

    public String getItemKey ()
    {
        return ItemKey;
    }

    public void setItemKey (String ItemKey)
    {
        this.ItemKey = ItemKey;
    }

    public String getNote ()
    {
        return Note;
    }

    public void setNote (String Note)
    {
        this.Note = Note;
    }

    public String getCustomNumber ()
    {
        return customNumber;
    }

    public void setCustomNumber (String customNumber)
    {
        this.customNumber = customNumber;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [Name = "+Name+", Source = "+Source+", End = "+End+", CodeNo = "+CodeNo+", Start = "+Start+", Account = "+Account+", ItemKey = "+ItemKey+", Note = "+Note+", customNumber = "+customNumber+"]";
    }
}
使用此库:


在Springboot中创建XML对象的逐步过程

  • 首先,您需要创建maven项目,并给出组id和工件id
  • 2.在src/main/java中创建java类,并为Example-XmlToJavaObject.java创建包名和java类名

    3.使用下面的链接将XML代码转换为POJO类

    它将根据您的XML数据创建POJO类。 为POJO创建一个包,并将所有POJO类放入该文件夹

  • 将XML文件放在pom.XML附近的项目中

  • 将main方法创建到XmlToJavaObject.java类中

  • 我正在写下面的代码,但您可以根据自己的要求进行更改

    我们的示例XML是

    <?xml version="1.0" encoding="UTF-8"?>
          <Student>
            <id>1111</id>
            <name>Ravi</name>
            <age>12</age>
            <dob>2/10/2008</dob>
        </Student>
    
    我们班的主要例子

    import java.io.File;
    import javax.xml.bind.JAXBContext;  
    import javax.xml.bind.JAXBException;  
    import javax.xml.bind.Unmarshaller;
    
    import com.test.pojo.Student;
    
    
    public class XmlToJavaObject {
    
    
        public static void main(String ar[])
        {
             try {  
    
                    File file = new File("Student.xml");  
                    JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);  
    
                    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
                    Student student= (Student) jaxbUnmarshaller.unmarshal(file);  
    
    
                    System.out.println(student.getName());
    
    
                  } catch (JAXBException e) {  
                    e.printStackTrace();  
                  }
        }
    }
    
    输出

    Ravi
    

    我需要对象而不是json,有什么建议吗?objectobj=(object)xmlJSONObj;我需要如何向spring boot model添加xmlns?@MrK,我的答案是您正在查看或其他内容?好的,以及我需要如何将其与以下内容结合:JAXBContext JAXBContext=JAXBContext.newInstance(model.class);Unmarshaller Unmarshaller=jaxbContext.createUnmarshaller();模型记录=(模型)解组器。解组器(读取器);
    import javax.xml.bind.annotation.XmlRootElement;
    
        @XmlRootElement
            public class Student
            {
                private String dob;
    
                private String name;
    
                private String id;
    
                private String age;
    
                public String getDob ()
                {
                    return dob;
                }
    
                public void setDob (String dob)
                {
                    this.dob = dob;
                }
    
                public String getName ()
                {
                    return name;
                }
    
                public void setName (String name)
                {
                    this.name = name;
                }
    
                public String getId ()
                {
                    return id;
                }
    
                public void setId (String id)
                {
                    this.id = id;
                }
    
                public String getAge ()
                {
                    return age;
                }
    
                public void setAge (String age)
                {
                    this.age = age;
                }
    
                @Override
                public String toString()
                {
                    return "ClassPojo [dob = "+dob+", name = "+name+", id = "+id+", age = "+age+"]";
                }
            }
    
    import java.io.File;
    import javax.xml.bind.JAXBContext;  
    import javax.xml.bind.JAXBException;  
    import javax.xml.bind.Unmarshaller;
    
    import com.test.pojo.Student;
    
    
    public class XmlToJavaObject {
    
    
        public static void main(String ar[])
        {
             try {  
    
                    File file = new File("Student.xml");  
                    JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);  
    
                    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
                    Student student= (Student) jaxbUnmarshaller.unmarshal(file);  
    
    
                    System.out.println(student.getName());
    
    
                  } catch (JAXBException e) {  
                    e.printStackTrace();  
                  }
        }
    }
    
    Ravi