我有以下xml文件:
<resources>
<resource id="res001">
<property name="propA" value="A" />
<property name="propB" value="B" />
</resource>
<resource id="res002">
<property name="propC" value="C" />
<property name="propD" value="D" />
</resource>
<resource id="res003">
<property name="propE" value="E" />
<property name="propF" value="F" />
</resource>
</resources>
Run Code Online (Sandbox Code Playgroud)
如何用Java/Xml做这样的事情:
Xml xml = new Xml("my.xml");
Resource res001 = xml.getResouceById("res003");
System.out.println("propF: " + res.getProperty("propF"));
Run Code Online (Sandbox Code Playgroud)
所以它打印:
F
Run Code Online (Sandbox Code Playgroud)
我尝试过使用XPathExpressionEngine的apache commons-configurations XMLConfiguration,但我无法让它工作.我用google搜索并找到了一些例子,但两者都不会起作用:(我正在寻找一个解决方案,我不需要遍历所有元素.
问候,亚历克斯
Way*_*ett 14
假设您愿意将属性文件重新编写为标准Java格式,这是微不足道的.假设您在名为的文件中包含以下内容props.xml:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>This is a comment</comment>
<entry key="propA">A</entry>
<entry key="propB">B</entry>
<entry key="propC">C</entry>
<entry key="propD">D</entry>
<entry key="propE">E</entry>
<entry key="propF">F</entry>
</properties>
Run Code Online (Sandbox Code Playgroud)
然后从文件中读取属性,如下所示:
java.util.Properties prop = new Properties();
prop.loadFromXML(new FileInputStream("props.xml"));
System.out.println(prop.getProperty("propF"));
Run Code Online (Sandbox Code Playgroud)
我只是使用 JAXB 将数据绑定到结构类似于 XML 文档的对象集中。
就像是:
@XmlRootElement("resources")
public class Resources {
public List<Resource> resource = new ArrayList<Resource>(); // important, can't be left null
}
public class Resource {
@XmlAttribute public String id;
public List<Property> property;
}
// and so on
Run Code Online (Sandbox Code Playgroud)
一个可能的问题是关于列表序列化;有两种模式,包裹式和非包裹式;就你而言,你想要“打开”。注释的 Javadoc 应该显示注释来定义它。
| 归档时间: |
|
| 查看次数: |
25257 次 |
| 最近记录: |