所以我想做的就是遍历下面显示的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>
所以我的想法是在屏幕数组中使用每个屏幕块中的信息创建一个Object。 id和背景很好但是我在迭代“区域”部分时遇到问题,因为在不同的部分中会有不同数量的区域条目。这是我现在使用的代码,由于某种原因,它通过'一个''两个'和'1',我希望它停在/屏幕。
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很新,所以我确定我没有在这里使用最好的方法而且会感谢任何帮助。感谢
答案 0 :(得分:3)
我使用Simple-xml将我的xml序列化为Object。 他们有很好的文档,您可以在这里获取库: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;
}
}
<强> Screen.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中了解更多相关信息。
祝你好运