我得到了一个关于XML并解析它的问题。我使用JDOM来解析我的XML文件,但我遇到了一些问题。Java:通过解析XML文件来获取对象的属性
我的XML的文件的样本如下:
<IO name="Bus" type="Class">
<ResourceAttribute name="Bandwidth" type="KiloBitPerSecond" value="50" />
</IO>
总线是IO类的对象实例。该对象获得了名称和类型属性。另外,它具有一些属性,如示例中的值为50的属性带宽和数据类型KiloBitPerSecond。
所以,当我想遍历文件用:
for(Element packages : listPackages)
{
Map<String, Values> valueMap = new HashMap<String, Values>();
List<Element> objectInstanceList = packages.getChildren();
for(Element objects : objectInstanceList)
{
List<Element> listObjectClasses = objects.getChildren();
for(Element classes : listObjectClasses)
{
List<Element> listObjectAttributes = classes.getChildren();
for(Element objectAttributes : listObjectAttributes)
{
List<Attribute> listAttributes = objectAttributes.getAttributes();
for(Attribute attributes : listAttributes)
{
String name = attributes.getName();
String value = attributes.getValue();
AttributeType datatype = attributes.getAttributeType();
Values v = new Values(name, datatype, value);
valueMap.put(classes.getName(), v);
System.out.println(name + ":" + value);
}
}
}
}
//System.out.println(valueMap);
}
值是一个类定义了对象属性:
public class Values{
private String name;
//private AttributeType datatype;
private String value;
多数民众赞成在代码的其余部分。我有两个相关的问题。第一个目前更优先。
如何获取对象的值(Attribute.Name = Bandwidth; Attribute.Value = 50)? Istead我得到
名称:公交 类型:
类我想到了一个额外的for循环,但JDOM类属性没有一个方法叫的getAttributes()。
这仅仅是第二优先,因为没有问题1我不能再走了。正如您在示例中看到的,Attribute有3个属性,名称,类型和值。我怎样才能提取样本的三倍放。 JDOM似乎只是知道属性,名称和值的两个属性。
非常感谢,希望我能够表达我的自我。
编辑:添加了一个额外的for循环中,所以输出是现在:
name:Bandwidth
type:KiloBitPerSecond
value:50
这意味着名称是属性的名称和值名称的值。不知道。至少现在问题更清晰了,我可以尝试2,但新的信息使我更清楚。
您应该使用递归解析你的XML – Grammin
值应按照对Java命名约定值,类应以大写字母 – Zavior
@zavior纠正启动。 – Alika87