我得到了一個關於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