2016-10-11 68 views
0
 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
    Document document = documentBuilder.parse(new File("mypage.html")); 
    document.getDocumentElement().normalize(); 
    NodeList nodeList = document.getElementsByTagName("input"); 

    for(int i=0 , size = nodeList.getLength() ; i < size ; i++){ 
     System.out.println(nodeList.item(i).getAttributes().getNamedItem("name").getNodeValue()); 
    } 

我使用上述代碼從某些html文件中獲取輸入標記的名稱屬性中的值。在從html文件讀取名稱屬性值時出錯

爲了更清楚我想要的打印 - 名字和姓氏從這個簡單的HTML文件代碼

<input type="text" name="firstname" value="Mickey" /> 
    <br> 
    Last name:<br> 
    <input type="text" name="lastname" value="Mouse" /> 

但是,錯誤出現: [致命錯誤] ...元素類型「輸入」必須由相匹配的結束標記「/輸入>終止...

代碼或建議的任何變化,最受大家歡迎的。

+0

有什麼不清楚的錯誤?你的html有一個標籤沒有結束標籤。 – nhouser9

+0

你如何解析這個?用XML解析器?這看起來不是有效的XML。不應該使用像JSoup這樣的HTML解析器? –

+0

@ nhouser9:但它確實 - 它是一個孤立的標籤並自行關閉。 –

回答

0

在誤差所說的話來看,

[致命錯誤] ...元素類型「輸入」必須由 匹配結束標記被終止「/輸入> ...

我認爲它期待的是,HTML是在這種格式。輸入標籤有其推薦的標籤</input>

 <input type="text" name="firstname" value="Mickey"></input> 
     <br> 
     Last name:<br> 
     <input type="text" name="lastname" value="Mouse"></input> 
+0

我也試過。 http://www.w3schools.com/tags/tag_input.asp –

+0

但html輸入沒有結束標記。我希望代碼可以讀取html和xml文件,但現在html更重要 –

+0

@PraveenRana在XML中,所有標籤必須有結束標籤。使用XML解析HTML庫(其中一些標籤沒有關閉標籤)就像在圓孔中製作方形釘。你可以編寫代碼來強制它做你想做的事,或者使用一個設計來解析html的庫。我如果我是你,我會用jsoup https://jsoup.org/ – ollie