java - 如何将String格式的xml解析为数组?
问题描述
有这样的字符串格式的xml:
<Users>
<User>
<name>Alex</name>
...other info
</User>
<User>
<name>Natasha</name>
...other info
</User>
</Users>
如何将这样的字符串拆分为字符串数组?
我的常见任务是,获取输入 xml,在元素上拆分,每个元素序列化并分别保存在数据库中。所以,对于我的任务 SAX,可能只有 Pattern 和 Matcher。
解决方案
假设你想要一个像
names[] = {"Alex", "Natasha"};
从 XML 文件:
<Users>
<User>
<name>Alex</name>
<city>New York</city>
</User>
<User>
<name>Natasha</name>
<city>New Jersey</city>
</User>
</Users>
您可以使用 JacksonXML 解析器来获取所有用户的名称。我已经为 RootElement 使用了用户类
@JacksonXmlRootElement(localName = "Users")
public class Users {
@JacksonXmlProperty(isAttribute=false, localName="User")
@JacksonXmlElementWrapper(useWrapping = false)
private List<User> user;
public List<User> getUsers() {
return user;
}
public void setUsers(List<User> users) {
this.user = users;
}
}
和内部用户块的用户类
public class User {
@JacksonXmlProperty(isAttribute=false, localName="name")
private String name;
@JacksonXmlProperty(isAttribute=false, localName="city")
private String city;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
然后将 XML 文件读取为:
public static void main(String[] args) throws XMLStreamException, IOException {
XmlMapper xmlMapper = new XmlMapper();
Users users = xmlMapper.readValue(new File("yourFileName"), Users.class);
Object[] names = users.getUsers()
.stream()
.map(u -> u.getName())
.collect(Collectors.toList())
.toArray();
//You may have to cast the names to String
}
推荐阅读
- ffmpeg - 使用ffplay时,如何消除视频过滤器中时间戳显示的毫秒数
- assembly - MIPS组装什么是lab_
示例:lab_00103994 - java - 如何从 Java 向 Android 中的按钮添加图标?
- java - Android Java 如何使用来自不同哈希图的信息在视图上动态添加文本视图
- java - 查询不使用 DAO 访问 Room 数据库,没有错误
- python - 编程中的mixins和utils有什么区别?
- css - 表格行背景颜色未填充 Edge/Chrome 中的容器
- bash - 使用 bash 脚本根据用户的输入编辑文件
- python - 我有一个 python FuncAnimation 绘图并正确运行。但是,MP4 文件要么是静止图像,要么是空图
- android - 如何在没有字符串连接的情况下在 Kotlin/android setText 中显示带有参数的字符串?