簡體   English   中英

jsoup無法返回所有子節點的完整節點

[英]jsoup fails to return complete node with all children

我有一個示例HTML,如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
 <html lang="en">
<head>
<title>example.com</title>
</head>
<body>

<div>
    <ul class="mb10">
        <li><input class="ript" name="pmtmthd" value="NOLINK"
            type="radio" id="NOLINK" reqType="ChgPaymentMtd" nodsb="true">
            <label for="NOLINK"><img
                src="https://example.com/example1.gif"
                height="23" width="147" alt="Credit Card">
                <div class="v10777" style="margin-left: 20px">Processed</div> 
          </label> </input>
        </li>
        <li><input class="ript" name="pmtmthd" value="SPLLINK"
            type="radio" id="SPLLINK" reqType="ChgPaymentMtd" nodsb="true"
            checked="checked"> <label for="SPLLINK"><img
                src="https://example.com/example2.gif"
                height="19" width="73" alt="spllink">
                </label> </input>
        </li>
      </ul>
   </div>
</body>
</html>

我正在嘗試提取所有無線電元素:

List<Element> radioElements = doc.getElementsByAttributeValue("type", "radio");

給出的輸出不包含任何子元素信息,如下所示:

<input class="ript" name="pmtmthd" value="NOLINK" type="radio" id="NOLINK" reqType="ChgPaymentMtd" nodsb="true" />

<input class="ript" name="pmtmthd" value="SPLLINK" type="radio" id="SPLLINK" reqType="ChgPaymentMtd" nodsb="true" checked="checked" />

我如何才能在所有孩子都完好無損的情況下獲取所有廣播元素?

Jsoup嘗試規范化html,以便它可以更正任何錯誤的行為(無效的html)。 將某些內容放置在input標記內是無效的html( input是一個自閉元素,不允許使用任何子代,只能使用屬性),因此將其刪除。 如果要防止發生這種規范化,請使用其他解析器,如下所示。

Document doc = Jsoup.parse(html, "", Parser.xmlParser());
Elements radios = doc.getElementsByAttributeValue("type", "radio");
System.out.println(radios);

產量

<input class="ript" name="pmtmthd" value="NOLINK" type="radio" id="NOLINK" reqtype="ChgPaymentMtd" nodsb="true"><label for="NOLINK"><img src="https://example.com/example1.gif" height="23" width="147" alt="Credit Card">
   <div class="v10777" style="margin-left: 20px">
    Processed
   </div></img></label></input>
<input class="ript" name="pmtmthd" value="SPLLINK" type="radio" id="SPLLINK" reqtype="ChgPaymentMtd" nodsb="true" checked="checked"><label for="SPLLINK"><img src="https://example.com/example2.gif" height="19" width="73" alt="spllink" /></label></input>

暫無
暫無

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

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