java - 如何将一个子元素值放入 Android 中的 ArrayList 中?
问题描述
我对标记所有元素的 XmlPullParser 事件有困难,但是如何将一个子元素存储到 ArrayList 中?
这是我的 xml 文件:
<site>
<name>Brake and Break</name>
<link>https://sampleactivity.000webhostapp.com/lesson_1.mp3</link>
<set>When teaching my daughter how to drive, I told her if she didn't hit the brake in time she would break the car's side mirror.</set>
<set>You shouldn’t brake as often as you do. You are going to break your car’s brakes.</set>
<set>I think this relationship is moving too fast for me. Maybe it's best to just hit the brake than to completely break up.</set>
<image>https://sampleactivity.000webhostapp.com/stckOvflw.png</image>
</site>
在我的 xml 文件中,我有元素名称SET那么如何将所有设置的元素和属性存储到数组列表中?
这是我的 xmlpullparser.java 代码:
switch (eventType) {
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase(KEY_SITE)) {
curStackSite = new StackSite();
}
break;
case XmlPullParser.TEXT:
curText = xpp.getText();
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase(KEY_SITE)) {
stackSites.add(curStackSite);
} else if (tagname.equalsIgnoreCase(KEY_NAME)) {
curStackSite.setName(curText);
} else if (tagname.equalsIgnoreCase(KEY_LINK)) {
curStackSite.setLink(curText);
} else if (tagname.equalsIgnoreCase(KEY_SET)) {
ArrayList<String> wew = new ArrayList<String>();
wew.add(curText);
curStackSite.setAlAbout(wew); <--- How can I store all element to arraylist here?
curStackSite.setSet(curText);
} else if (tagname.equalsIgnoreCase(KEY_IMAGE_URL)) {
curStackSite.setImgUrl(curText);
}
break;
default:
break;
}
我已经尝试过对我们进行 dom 解析,但在我的代码中仍然没有太大的作用。
更新:
这是我的堆栈站点值:
public class StackSite {
private String name;
private String link;
private String about;
private List<String> AlAbout;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getAbout() {
return about;
}
public void setAbout(String about) {this.about = about;}
public List<String> getAlAbout() {
return AlAbout;
}
public void setAlAbout(List<String> AlAbout) {this.AlAbout = AlAbout;}
@Override
public String toString() {
return "StackSite [name=" + name + ", link=" + link + ", about="
+ about + ", Array sets=" + AlAbout + "]";
}
}
解决方案
如果StackSite
班级有这样的成员:
List<String> allSets;
以及StackSite
初始化allSets
为空列表的构造函数:
allSets = new ArrayList<>();
然后在您只需添加设置文本的END_TAG
情况下:tagName.equalsIgnoreCase(KEY_SET)
curStackSite.allSets.add(curText);
allSets
将为每个<set>…</set>
遇到的列表添加一个单独的条目。
在解析allSets
列表成员的最后,StackSite
包含 0 个或多个集合内容的条目。
至于属性,您可能希望为StackSiteSet
包含String
集合文本和属性字段的新类创建一个新类,而不是将集合仅视为字符串。
因此,您的END_TAG
处理</set>
应如下所示:
} else if (tagname.equalsIgnoreCase(KEY_SET)) {
// Get the list and add another element to it.
curStackSite.getAlAbout().add(curText);
}
推荐阅读
- php - 在 Woocommerce 管理员、订单和电子邮件中显示自定义付款字段
- mongodb - 我需要将我的 mongo 集合转换为对象数组到字符串数组
- angular - Angular: [disabled]="isDisabled()" 是正确的方法吗?
- javascript - 列中包含“n”个单词的数据表过滤器
- android - Android Activity中final字段、构造函数和onCreate之间的冲突
- c# - Properties.Settings.Default.UserName.value == ""
- javascript - Angular 5 chrome浏览器视图问题
- javascript - 在情节中绘制共同的零线
- python - 在循环 Pandas 中使用数据框名称
- powershell - 结果大小问题 - 找不到与参数名称“resultsize”匹配的参数