如何在JavaSpring引导上将xml转换为对象
您好,我正在尝试转换包含大量对象的xml,我得到一个 错误消息:根元素后面的文档中的标记必须格式正确 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);
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对象的逐步过程
<?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