我有一个重复节点的XML,我使用DOM解析器进行顶级解析。经过很多研发后,我可以在互联网上找到任何可以帮助我的东西。我的xml看起来像
<nos1>
<Name>aqwer</Name>
<class>sas</class>
<class>xcd</class>
<class>asd</class>
<Name>cfg</Name>
<Name>cfg</Name>
<nos1>
任何建议如何解析此xml的重复值。
答案 0 :(得分:2)
您可以使用w3c dom文档解析XML,如下所示:
DocumentBuilderFactory df = DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder db = df.newDocumentBuilder();
InputStream is = new ByteArrayInputStream(response.getContent().getBytes("UTF-8"));
org.w3c.dom.Document doc = db.parse(is);
NodeList links = doc.getElementsByTagName("class");
for(int i=0; i< links.getLength(); i++)
{
Node link = links.item(i);
System.out.println(link.getTextContent());
}
}
catch(Exception ex)
{
}
希望这会对你有所帮助。
答案 1 :(得分:1)
您应阅读所有元素,阅读后通过Set删除重复项。以下是使用XMLBeam的示例,但任何其他库都可以。
public class TestMultipleElements {
@XBDocURL("resource://test.xml")
public interface Projection {
@XBRead("/nos1/Name")
List<String> getNames();
@XBRead("/nos1/class")
List<String> getClasses();
}
@Test
public void uniqueElements() throws IOException {
Projection projection = new XBProjector().io().fromURLAnnotation(Projection.class);
for (String name : new HashSet<String>(projection.getNames())) {
System.out.println("Found Name:" + name);
}
for (String clazz : new HashSet<String>(projection.getClasses())) {
System.out.println("Found Name:" + clazz);
}
}
}
打印出来:
Found Name:aqwer
Found Name:cfg
Found Name:xcd
Found Name:sas
Found Name:asd