0

我正在尝试将 xml 文件读取到 java 对象,但它返回的 null
下面是我的代码:

我的xml:

<?xml version="1.0" encoding="UTF-8"?>
<Cricket>
    <Batting>
        <BattingData>
            <Name>playerBat1</Name>
            <Score>50</Score>
            <Balls>30</Balls>
        </BattingData>
        <BattingData>
            <Name>playerBat2</Name>
            <Score>50</Score>
            <Balls>30</Balls>
        </BattingData>
    </Batting>
    <Bowling>
        <BowlingData>
            <Name>playerBowl1</Name>
            <Wickets>2</Wickets>
            <Balls>24</Balls>
            <Overs>4</Overs>
        </BowlingData>
        <BowlingData>
            <Name>playerBowl2</Name>
            <Wickets>2</Wickets>
            <Balls>24</Balls>
            <Overs>4</Overs>
        </BowlingData>
    </Bowling>
    <Overs>20</Overs>
    <BattingTeam>Team A</BattingTeam>
    <BowlingTeam>Team B</BowlingTeam>
</Cricket>

班级

    package cricket.domain;

    public class Cricket {
    private Batting Batting;
    private Bowling Bowling;
    private Integer Overs;
    private String BattingTeam;
    private String BowlingTeam;

    public Batting getBatting() {
        return Batting;
    }

    public void setBatting(Batting batting) {
        Batting = batting;
    }

    public Bowling getBowling() {
        return Bowling;
    }

    public void setBowling(Bowling bowling) {
        Bowling = bowling;
    }

    public Integer getOvers() {
        return Overs;
    }

    public void setOvers(Integer overs) {
        Overs = overs;
    }

    public String getBattingTeam() {
        return BattingTeam;
    }

    public void setBattingTeam(String battingTeam) {
        BattingTeam = battingTeam;
    }

    public String getBowlingTeam() {
        return BowlingTeam;
    }

    public void setBowlingTeam(String bowlingTeam) {
        BowlingTeam = bowlingTeam;
    }

}

解组

    try {

            JAXBContext context = JAXBContext.newInstance(Cricket.class);
            Unmarshaller m = context.createUnmarshaller();
            InputStream inputStream = null;
            try {
                inputStream = new FileInputStream(
                        "D://Documents//testXml//cricket.xml");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            Source source = new StreamSource(inputStream);
            JAXBElement<Cricket> cri = m.unmarshal(source, Cricket.class);
            Cricket cricket = cri.getValue();
            System.out.println("object : " + cricket.getBattingTeam().toString());

        } catch (JAXBException e) {
            e.printStackTrace();
        }

当我在没有注释的情况下阅读它时,它返回了我的空对象。我想知道我的 xml 格式是否正确或我的代码有问题。

4

2 回答 2

0

问题在于 Java 命名约定:变量需要以小写字母开头。如果我使用小写的变量和元素名称,它工作正常。因此,将 xml 和 java 对象更改为小写时,上述内容可以正常工作。截至目前,它已解决。但问题是,如果我的 xml 是静态的并且是以大写字母开头的固定格式。没有注释怎么解析呢?

于 2015-09-11T08:26:00.637 回答
0

如果您不想指定 jaxb 注释,则可以实现 MessageBodyReader。这适用于 RESTful Web 服务,并且是 JEE7 的一部分。您必须使用@provider 和@consumes 注册

于 2015-09-09T10:25:09.033 回答