Java 如何使用dom解析器获取重复节点的唯一值

Java 如何使用dom解析器获取重复节点的唯一值,java,xml,parsing,dom,Java,Xml,Parsing,Dom,我有一个重复节点的XML,我有一个使用DOM解析器解析它的top。经过大量的研发,我可以在互联网上找到任何可以帮助我的东西。我的xml看起来像 <nos1> <Name>aqwer</Name> <class>sas</class> <class>xcd</class> <class>asd</class> <Name>cfg</Name>

我有一个重复节点的XML,我有一个使用DOM解析器解析它的top。经过大量的研发,我可以在互联网上找到任何可以帮助我的东西。我的xml看起来像

<nos1>
  <Name>aqwer</Name>
  <class>sas</class>
  <class>xcd</class>
  <class>asd</class>
  <Name>cfg</Name>
  <Name>cfg</Name>
<nos1>

阿奎尔
sas
xcd
自闭症
cfg
cfg

任何关于如何解析重复值的xml的建议。

您可以使用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)
    {
    }
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
尝试
{
DocumentBuilder db=df.newDocumentBuilder();
InputStream is=newbytearrayinputstream(response.getContent().getBytes(“UTF-8”);
org.w3c.dom.Document doc=db.parse(is);
nodelistlinks=doc.getElementsByTagName(“类”);
对于(int i=0;i

希望这对您有所帮助。

您可以使用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)
    {
    }
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
尝试
{
DocumentBuilder db=df.newDocumentBuilder();
InputStream is=newbytearrayinputstream(response.getContent().getBytes(“UTF-8”);
org.w3c.dom.Document doc=db.parse(is);
nodelistlinks=doc.getElementsByTagName(“类”);
对于(int i=0;i

希望这对您有所帮助。

您可以使用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)
    {
    }
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
尝试
{
DocumentBuilder db=df.newDocumentBuilder();
InputStream is=newbytearrayinputstream(response.getContent().getBytes(“UTF-8”);
org.w3c.dom.Document doc=db.parse(is);
nodelistlinks=doc.getElementsByTagName(“类”);
对于(int i=0;i

希望这对您有所帮助。

您可以使用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)
    {
    }
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
尝试
{
DocumentBuilder db=df.newDocumentBuilder();
InputStream is=newbytearrayinputstream(response.getContent().getBytes(“UTF-8”);
org.w3c.dom.Document doc=db.parse(is);
nodelistlinks=doc.getElementsByTagName(“类”);
对于(int i=0;i

希望这对您有所帮助。

您应该阅读所有元素,并在阅读后通过集合消除重复项。下面是一个使用的示例,但任何其他库都可以

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);
    }

}
}

您应该读取所有元素,并在读取后通过集合消除重复项。下面是一个使用的示例,但任何其他库都可以

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);
    }

}
}

您应该读取所有元素,并在读取后通过集合消除重复项。下面是一个使用的示例,但任何其他库都可以

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);
    }

}
}

您应该读取所有元素,并在读取后通过集合消除重复项。下面是一个使用的示例,但任何其他库都可以

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);
    }

}
}


xslt解决方案怎么样?您想获取所有uniques值还是删除重复项?我想获取所有节点值。知道如何获取它吗?xslt解决方案如何?您想获取所有uniques值还是删除重复项?我想获取所有节点的值。知道如何获取它吗?xslt解决方案如何?您想获取所有uniques值还是删除重复项?我想获取所有节点的值。知道如何获取它吗?xslt解决方案如何?您想获取所有uniques值还是删除重复项?我想获取所有节点的值。你知道怎么得到它吗?你测试过这个。。。对于我的xml,它返回#text。不,我还没有测试它。这只是给你的提示程序。我以前也用过同样的东西。试试看,我现在已经测试过了。我在打印中更改为link.getTextContent()。下面是类节点的结果:sas xcdasd@Saiprateek-你能接受这个答案吗?如果是,请接受。我已经使用过这种方法,但正如我在xml中提到的,它返回的是每个节点的文本。请测试一下。。。对于我的xml,它返回#text。不,我还没有测试它。这只是给你的提示程序。我以前也用过同样的东西。试试看,我现在已经测试过了。我在打印中更改为link.getTextContent()。下面是类节点的结果:sas xcdasd@Saiprateek-你能接受这个答案吗?如果是,请接受。我已经使用过这种方法,但正如我在xml中提到的,它返回的是每个节点的文本。请测试一下。。。对于我的xml,它返回#text。不,我还没有测试它。这只是给你的提示程序。我以前也用过同样的东西。试试看,我现在已经测试过了。我在打印中更改为link.getTextContent()。下面是类节点的结果:sas xcdasd@Saiprateek-你能接受这个答案吗?如果是,请接受。我已经使用过这种方法,但正如我在xml中提到的,它返回的是每个节点的文本。请测试一下。。。对于我的xml,它返回#text。不,我还没有测试它。这只是给你的提示程序。我以前也用过同样的东西。试试看,我现在已经测试过了。我在打印中更改为link.getTextContent()。下面是类节点的结果:sas xcdasd@Saiprateek-你能接受这个答案吗?如果是,请接受。我已经使用过这种方法,但正如我在xml中提到的,它会为每个节点返回文本