首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据数字id获取对象

根据数字id获取对象
EN

Stack Overflow用户
提问于 2021-02-16 00:57:33
回答 1查看 25关注 0票数 0

我想根据唯一的id获得特定的XML配置:

XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<environment name="qa">
    <configuration>
        <url>test</url>
        <username>test</username>
        <password>test!</password>
        <tests>
            <test number = "123" name = "test">
                <lp_number = "123"/>
            </test>
            <test number = "564" name = "test">
                <lp_number = "1233333"/>
            </test>
        </tests>
    </configuration>
</environment>

JAXB对象:

代码语言:javascript
复制
    public class Configuration {
    
        @XmlElement(name = "url", required = true)
        String url;
    
        @XmlElement(name = "username", required = true)
        String username;
    
        @XmlElement(name = "password", required = true)
        String password;
            
        @XmlElement(name = "tests", required = true)
        Tests tests;
    }

@Getter
@Setter
@XmlAccessorType(XmlAccessType.FIELD)
public class Tests {

    @XmlElement(name = "test", required = true)
    private List<Test> test;

}

@Getter
@Setter
@XmlAccessorType(XmlAccessType.FIELD)
public class Test {

    @XmlAttribute
    private Integer number;

}

String fileName = "settings.xml";
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource(fileName).getFile());
        JAXBContext jaxbContext = JAXBContext.newInstance(Environment.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        env = (Environment) jaxbUnmarshaller.unmarshal(file);

问题是如何获得基于数字id的配置?我只想获取number = "564“的对象。

代码语言:javascript
复制
<test number = "564" name = "test">
   <lp_number = "1233333"/>
</test>
EN

回答 1

Stack Overflow用户

发布于 2021-02-16 03:59:52

代码语言:javascript
复制
@XmlRootElement
public class Environment {

        @XmlElement(name = "configuration", required = true)
        Configuration configuration;

       ...getters
}

@Getter
@Setter
@XmlAccessorType(XmlAccessType.FIELD)
public class Test {

    @XmlAttribute
    private Integer number;

    @XmlAttribute(name = "number")
    Integer num;

}

然后,下面的代码应该会为您提供一个Environment实例

代码语言:javascript
复制
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource(fileName).getFile());
        JAXBContext jaxbContext = JAXBContext.newInstance(Environment.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        env = (Environment) jaxbUnmarshaller.unmarshal(file);

因此您可以搜索该实例

代码语言:javascript
复制
  Configuration conf = env.getConfiguration();
    List<Test> tests = conf.getTests();
    for ( Test test : tests ) {
      if(test.getNum() == 564) {
        System.out.println("Found!");
    }
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66212191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档