我想根据唯一的id获得特定的XML配置:
XML:
<?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对象:
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“的对象。
<test number = "564" name = "test">
<lp_number = "1233333"/>
</test>发布于 2021-02-16 03:59:52
@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实例
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);因此您可以搜索该实例
Configuration conf = env.getConfiguration();
List<Test> tests = conf.getTests();
for ( Test test : tests ) {
if(test.getNum() == 564) {
System.out.println("Found!");
}
}https://stackoverflow.com/questions/66212191
复制相似问题