当前位置: 代码迷 >> java >> 如何解析字符串格式的xml到数组?
  详细解决方案

如何解析字符串格式的xml到数组?

热度:30   发布时间:2023-07-31 11:00:08.0

有这样的String格式的xml:

<Users>
  <User> 
      <name>Alex</name>  
      ...other info
  </User>
  <User>
      <name>Natasha</name>
      ...other info
  </User>
</Users>

如何将这样的字符串拆分为字符串数组?

我的常见任务是,获取输入xml,分割成元素,然后将每个元素序列化并分别保存在数据库中。 因此,对于我的任务SAX,可能只有Pattern和Matcher。

Sax解析器是我的最爱,可以尝试一下:

这是来自以下的示例xml解析代码示例:

假设您想要一个类似的输出

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
    }
  相关解决方案