问题描述
有这样的String格式的xml:
<Users>
<User>
<name>Alex</name>
...other info
</User>
<User>
<name>Natasha</name>
...other info
</User>
</Users>
如何将这样的字符串拆分为字符串数组?
我的常见任务是,获取输入xml,分割成元素,然后将每个元素序列化并分别保存在数据库中。 因此,对于我的任务SAX,可能只有Pattern和Matcher。
1楼
Sax解析器是我的最爱,可以尝试一下:
这是来自以下的示例xml解析代码示例:
2楼
假设您想要一个类似的输出
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使用了Users类
@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;
}
}
和内部用户块的User类
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
}