2012-03-29 148 views
1

我想創建一個GUI界面,用於在java swing中進行用戶登錄。我試圖將數據存儲在一個Xml文件中,並且需要從java訪問它,並檢查在GUI中輸入的用戶名和密碼是否與xml數據中的任何給定用戶詳細信息匹配。如果匹配,他們可以進入下一個級別。從java讀取xml文件

我想使用SAX解析器來訪問Xml文件。我無法理解SAX解析器是如何工作的以及它如何用於與來自GUI的輸入進行匹配。

請幫助。感謝您提前提供的所有幫助。

+2

DOM或JAXB比SAX更好的模式,除非你的XML文件是巨大的 – artbristol 2012-03-29 10:02:27

回答

0

爲每個GUI元素,你應該得到的文本和開放的XML和解析它檢查THIS CODE出來,這將有助於

2

,如果你有模型文檔,你可以使用JAXB:

JAXBContext jc = JAXBContext.newInstance("myPackageName"); 
//Create unmarshaller 
Unmarshaller um = jc.createUnmarshaller(); 
//Unmarshal XML contents of the file myDoc.xml into your Java object instance. 
MyJAXBObject myJAXBObject = (MyJAXBObject) 
    um.unmarshal(new java.io.FileInputStream("myDoc.xml")); 

您可以輕鬆地驗證,如果你有你的模型的架構

這裏有一個例子

http://www.mkyong.com/java/jaxb-hello-world-example/

0

你可以做這樣

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/two.xml"); 

NodeList username = doc.getElementsByTagName("username");   
System.out.println("username ="+username.item(0).getTextContent()); 
NodeList password = doc.getElementsByTagName("password");   
System.out.println("password ="+password.item(0).getTextContent()); 
0

SAX解析器的工作方式不同,從DOM/JAXB。通過DOM,可以通過DOM生成的節點/元素訪問XML內容。使用SAX,分析器將通過您的XML文件中讀取,並且不是通過事件就會發現內容處理程序等類

  • 開始標記
  • 結束標記

相關信息,例如標籤屬性,內容等

實施例:

public class TagHandler extends DefaultHandler{ 

//tag opening detection 
public void startElement(String uri, String localName, 
     String qName, Attributes attributes) throws SAXException{ 
    // ... your code 
} 
//tag closing detection 
public void endElement(String uri, String localName, String qName) 
     throws SAXException{ 
    // ... your code 
} 

} 

還有更多比提到的兩個事件。

我希望這將有助於你瞭解SAX更好