Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 如果子元素的架构未知,如何解组嵌套的子元素(包含<;&;>;)。我能';t使用&;lt&;燃气轮机;在xml中。_Java_Xml Parsing_Jaxb_Unmarshalling - Fatal编程技术网

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>&lt;FN&gt;Johny&lt;/FN&gt;&lt;LN&gt;Depp&lt;/LN&gt;&lt;a&gt;AAAA&lt;/a&gt;&lt;z&gt;ZZZZ&lt;/z&gt;</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>
-------------------------