Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Xml 在JAXB中看不到该节点_Xml_Jaxb_Unmarshalling - Fatal编程技术网

Xml 在JAXB中看不到该节点

Xml 在JAXB中看不到该节点,xml,jaxb,unmarshalling,Xml,Jaxb,Unmarshalling,不知是否有人能帮忙,我有下面的xml文件,问题是我看不到第三个节点“food”。我已经使用JAXB创建了文件。已经创建了四个文件:ObjectFactory、早餐菜单、foodType和food。我可以从早餐菜单进入foodType,查看名称(新鲜和冷冻),但看不到“食物”及其内容。请给我一些想法。 谢谢 新鲜的 2. 3. 1. 冻结的 2. 1. 爪哇 JAXBContext-JAXBContext=JAXBContext.newInstance(“食物”); Unmarshaller

不知是否有人能帮忙,我有下面的xml文件,问题是我看不到第三个节点“food”。我已经使用JAXB创建了文件。已经创建了四个文件:ObjectFactory、早餐菜单、foodType和food。我可以从早餐菜单进入foodType,查看名称(新鲜和冷冻),但看不到“食物”及其内容。请给我一些想法。 谢谢


新鲜的
2.
3.
1.
冻结的
2.
1.
爪哇

JAXBContext-JAXBContext=JAXBContext.newInstance(“食物”);
Unmarshaller u=jaxbContext.createUnmarshaller();
早餐菜单bM=(早餐菜单)u.unmarshal(
新文件输入流(“C:\\Users\\food.xml”);
List tType=bM.getFoodType();
for(食物类型tT:tType){
System.out.println(“\t”+tT.getFood());
}

由于这个用例有一个非常简单的XML文档,我建议从Java对象开始

早餐菜单

是异常配置,因此您只需要在希望绑定与默认绑定不同的位置添加注释(请参见:)

import java.util.List;
导入javax.xml.bind.annotation.*;
@XmlRootElement(name=“早餐菜单”)
公共早餐菜单{
私有列表食物类型;
公共列表getFoodType(){
返回食物类型;
}
公共void setFoodType(列表foodType){
this.foodType=foodType;
}
}
食物类型

默认情况下,映射基于公共属性,但我们可以将JAXB更改为使用带有
@xmlacessortype(xmlacesstype.FIELD)
注释的字段(请参阅:)

import java.util.List;
导入javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
公共类食物类型{
私有字符串名称;
@XmlElement(name=“食品”)
私人清单食品;
}
食物

import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
公共食品{
@XmlAttribute
私有字符串名称;
私人int价格;
}
演示

导入java.io.File;
导入javax.xml.bind.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(BreakfastMenu.class);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
File xml=新文件(“src/forum14751166/input.xml”);
BreakfastMenu bm=(BreakfastMenu)unmarshaller.unmarshal(xml);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
元帅(bm,系统输出);
}
}

用于生成JAXB模型的XML模式是什么样子的?如何在生成的模型上创建
JAXBContext
?由于这是一个简单的XML文档,您考虑过从Java对象开始吗?感谢您的回答,我没有在上面说清楚,我可以看到“food”节点,但看不到它的子节点(Price)。映射到
food
元素的类是什么样子的?非常感谢Blaise,这是一个很大的帮助。我已经设法让它工作了。
<Breakfast-menu>
    <foodType>
        <name>fresh</name>
        <food name="Milk">
            <price>2</price>
        </food>
        <food name="Pears">
            <price>3</price>
        </food>
        <food name="Apples">
            <price>1</price>
        </food>
    </foodType>
    <foodType>
        <name>frozen</name>
        <food name="Fish">
            <price>2</price>
        </food>
        <food name="chips">
            <price>1</price>
        </food>
    </foodType>
</Breakfast-menu>