2012-03-29 226 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更好