Java 如果子元素的架构未知,如何解组嵌套的子元素(包含<;&;>;)。我能';t使用&;lt&;燃气轮机;在xml中。
客户模式:Java 如果子元素的架构未知,如何解组嵌套的子元素(包含<;&;>;)。我能';t使用&;lt&;燃气轮机;在xml中。,java,xml-parsing,jaxb,unmarshalling,Java,Xml Parsing,Jaxb,Unmarshalling,客户模式: @XmlRootElement public class Customer { String name; int id; public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public int getId() { return id; } @XmlElement public void
@XmlRootElement
public class Customer {
String name;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
@XmlElement
public void setId(int id) {
this.id = id;
}
}
解组代码:
public static void unmarshalXml2Obj() {
try {
File file = new File(
"D:/Workspace/CustomerFile.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer);
System.out.println("ID : " + customer.getId());
System.out.println("Name : " + customer.getName());
System.out.println("-------------------------");
} catch (JAXBException e) {
e.printStackTrace();
}
}
要解组的XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer >
<id>100</id>
<name><FN>Johny</FN><LN>Depp</LN><a>AAAA</a><z>ZZZZ</z></name>
</customer>
不使用角括号时:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer >
<id>100</id>
<name><FN>Johny</FN><LN>Depp</LN><a>AAAA</a><z>ZZZZ</z></name>
</customer>
100
FNJohny/FNLDEPP/LNaAAAA/azZZZZ/z
正确输出:
test.example.Customer@7a279c
ID : 100
Name : <FN>Johny</FN><LN>Depp</LN><a>AAAA</a><z>ZZZZ</z>
-------------------------
test.example。Customer@7a279c
身份证号码:100
姓名:JohnyDeppAAAAZZZZ
-------------------------
我不能在xml中使用<>。只需要使用角括号(<和>)就可以解决问题。这里的问题是我们无法控制(更改)XML,我们是否可以在不更改XML数据的情况下在我们的终端做一些事情。在这种情况下,您的名字可以被视为名字、姓氏和日期的父标记,您必须创建一个单独的类来保存这些标记的数据,所以你可以访问它们。我不熟悉解组器,但它似乎是这样工作的。本教程可能对您有所帮助。在您的案例中,状态可以被视为名称标签。只要做一些修改/添加,您就会得到所需的输出。您好@drgPP,谢谢您的支持。如前所述,子元素的模式未知。我们无法创建类名,因为它的变量未知。但是,如果我们可以用java实现,它将允许我们在不更改原始XML的情况下处理我们端的XML。这里的问题是我们无法控制(更改)XML,我们是否可以在不更改XML数据的情况下在我们端做些事情。在这种情况下,您的姓名可以被视为名字、姓氏和日期的父标记,您必须创建一个单独的类来保存关于这些标记的数据,以便访问它们。我不熟悉解组器,但它似乎是这样工作的。本教程可能对您有所帮助。在您的案例中,状态可以被视为名称标签。只要做一些修改/添加,您就会得到所需的输出。您好@drgPP,谢谢您的支持。如前所述,子元素的模式未知。我们无法创建类名,因为它的变量未知。然而,如果我们可以用java实现,它将允许我们从我们的终端处理XML,而不改变原始XML。
test.example.Customer@7a279c
ID : 100
Name : <FN>Johny</FN><LN>Depp</LN><a>AAAA</a><z>ZZZZ</z>
-------------------------