簡體   English   中英

在JSoup中獲取基於父元素的元素

[英]Get element based on parent in JSoup

在下面的XML中,我希望能夠獲得第一個標題標記的內容,而不是第二個。 不幸的是,代碼打印了兩個標題標簽的內容......

任何幫助都會非常感謝!

String feedXMLString = "<entry><title>title 1</title><source><title>title 2</title></source></entry>";
    Document feedXML = Jsoup.parse(feedXMLString);

    NodeTraversor feedXMLTraversor = new NodeTraversor(new NodeVisitor() {

          @Override
          public void tail(Node node, int depth) {
              if (node instanceof Element) {

                  String tagName = ((Element) node).tagName();                    
                  String parentTagName = ((Element) node).parent().tagName();

                  if (tagName.equals("title")) {          
                      if (parentTagName.equals("entry")) {
                          String title = ((Element) node).ownText();
                          System.out.println(title);
                      }
                  }
              }
          }

          @Override
          public void head(Node node, int depth) { 
          }
        });
    feedXMLTraversor.traverse(feedXML.body());

輸出是

title 1
title 2

我只是想讓它成為標題1.我假設第二個標題的父標簽是<source> ,但由於某種原因,JSoup似乎認為它是<entry>

謝謝!

謝謝!

為什么不使用Jsoup API的選擇器部分? 它使用起來要容易得多,它更干凈,而且我願意打賭它也會更快。 我個人使用的是:

//The line you already had
Document doc = Jsoup.parse(feedXMLString);

//This will get you all the titles
Elements elems = doc.select("title");

//And now you can proceed in various ways:
String title1stWay = elems.first().text();
String title2ndWay = elems.get(0).text();

看看這里: Jsoup Selector API

嘗試添加(在String tagName ,String parentTagName...下面String tagName ,String parentTagName...

int numOfParents = ((Element) node).parents().size();

和改變

if (parentTagName.equals("entry"))

if (parentTagName.equals("entry") && (numOfParents == 1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM