gpt4 book ai didi

java - 循环遍历 XML 以构建对象

转载 作者:搜寻专家 更新时间:2023-11-01 09:13:08 24 4
gpt4 key购买 nike

所以我想做的是循环遍历如下所示的 XML 文件,并将内容保存到每个“屏幕”的对象中。

我的 XML 如下:

<?xml version="1.0" encoding="utf-8"?>
<screens>
<screen id="house" backdropimage = "R.drawable.scene">
<region id="one" rleft = "200" rright = "200" rtop = "10" rbottom = "10"/>
<region id="two" rleft = "220" rright = "220" rtop = "12" rbottom = "12"/>
<paths left = "park" right = "x" top = "x" bottom = "x"/>
</screen>
<screen id="park" backdropimage = "R.drawable.park">
<region id="1" rleft = "500" rright = "200" rtop = "10" rbottom = "10"/>
<paths right = "house" left = "x" top = "x" bottom = "x"/>
</screen>
</screens>

所以我的想法是在我的屏幕数组中创建一个对象,其中包含每个屏幕 block 中的信息。 id 和背景很好,但我在遍历“区域”部分时遇到问题,因为不同部分中的区域条目数量不同。这是我目前使用的代码,出于某种原因,它经过“一”、“二”和“1”,我希望它在/screen 处停止。

    depth = parser.getDepth();
while(parser.getDepth() == depth) {

if(event==XmlPullParser.START_TAG && parser.getName().contentEquals("region")) {
Region reg = new Region(parser.getAttributeIntValue(null, "rleft", 0),
parser.getAttributeIntValue(null, "rtop", 0),
parser.getAttributeIntValue(null, "rright", 0),
parser.getAttributeIntValue(null, "rbottom", 0));
//String str = parser.getIdAttribute();
newScreen.area = (reg);
//Rect temp = reg.getBounds();
newScreen.areaArray.add(reg);
parser.next();
}

这是我第一次尝试在 java/android 中使用 XML 文件,总的来说我对 Java 还是很陌生,所以我确定我在这里使用的不是最好的方法,非常感谢任何帮助.谢谢

最佳答案

我使用 Simple-xml 将我的 xml 序列化为一个对象。他们有很好的文档,你可以在这里得到图书馆:http://simple.sourceforge.net/

这是一个例子:

YourActivity.java

import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

....
private Screens myScreens;

....


private void serializeMyXml(){
File source = new File("directory/yourXmlFile.xml");
Serializer serializer = new Persister();
try {
myScreens= serializer.read(Screens.class, source);

} catch (Exception e) {
e.printStackTrace();
}
}

Screens.java

import java.io.Serializable;
import java.util.List;

import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root
public class Screensimplements Serializable{

/**
*
*/
private static final long serialVersionUID = 1111;//some random unique serialversion id

@ElementList(inline=true)
private List<Screen> list;

public List<Screen> getList() {
return list;
}

}

屏幕.java

    import java.io.Serializable;

import org.simpleframework.xml.Attribute;

public class Entity implements Serializable{

/**
*
*/
private static final long serialVersionUID = 5004451486040850151L;

@Attribute
private String backdropimage;

@Attribute
private int id;

@ElementList
private List<Region> region;

@Element
private Paths paths;

public int getId() {
return id;
}

public String getBackdropimage() {
return backdropimage;
}

}

等等......等等......在documewntatio中阅读更多相关信息。

祝你好运

关于java - 循环遍历 XML 以构建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6778589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com