Pessoal, eu gostaria de saber como posso fazer para parsear utilizando o JAX-B um xml como o abaixo:
<?xml version="1.0" encoding="UTF-8"?>
<setup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="pattern.xsd">
<customer name="customer">
<databases>
<database>
<name>System1</name>
<host>host1</host>
<port>1234</port>
</database>
<database>
<name>System2</name>
<host>host2</host>
<port>5677</port>
</database>
<database>
<name>System3</name>
<host>host3</host>
<port>9876</port>
</database>
</databases>
</customer>
</setupmonitoria>
Estou tendo dificuldades para acessar os elementos, estou tentando fazer da seguinte maneira mas acredito que não seja o caminho:
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="setup")
@XmlAccessorType(XmlAccessType.FIELD)
public class Setup {
@XmlAttribute(name="name")
private String customer;
@XmlElementWrapper(name="databases")
@XmlElement(name="database")
private List<SetupDatabase> databases = new ArrayList<>();
@Override
public String toString() {
return this.databases.toString();
}
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public List<SetupDatabase> getDatabases() {
return databases;
}
public void setDatabases(List<SetupDatabase> databases) {
this.databases = databases;
}
}
Acredito que enquanto temos um xml com uma lista encadeada a outra (por exemplo venda > produtos > produto) tudo bem, agora no meu caso é mais complicado. Também não consigo acessar o atributo da tag.
Agradeço a ajuda de antemão.