从java读取xml文件

时间:2012-03-29 09:37:18

标签: java xml saxparser

我正在尝试为java swing中的用户登录创建GUI界面。我试图将我的数据存储在Xml文件中,我需要从java访问它并检查在GUI中输入的用户名和密码是否与xml数据中的任何给定用户详细信息匹配。如果匹配,则可以访问下一级别。

我正在尝试使用SAX解析器来访问Xml文件。我无法理解SAX解析器的工作原理以及如何使用它来与GUI的输入进行匹配。

请帮忙。感谢您的所有帮助。

4 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

对于每个GUI元素,您应该获取文本,对于开放XML并解析它,检查THIS CODE,这将是有帮助的

答案 2 :(得分: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());

答案 3 :(得分:0)

SAX Parser与DOM / JAXB的工作方式不同。使用DOM,XML内容可通过DOM生成的节点/元素访问。使用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