Чтение XML-файла из Java - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь создать графический интерфейс для входа пользователя в java swing.Я пытаюсь сохранить свои данные в XML-файле, и мне нужно получить к нему доступ из java и проверить, совпадают ли имя пользователя и пароль, введенные в GUI, с какой-либо из указанных данных пользователя в данных xml.Если он совпадает, им предоставляется доступ к следующему уровню.

Я пытаюсь использовать SAX-парсер для доступа к XML-файлу.Я не могу понять, как работает синтаксический анализатор SAX и как его можно использовать для сопоставления с входными данными из графического интерфейса.

Пожалуйста, помогите.Спасибо за вашу помощь заранее.

Ответы [ 4 ]

2 голосов
/ 29 марта 2012

вы можете использовать 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 голосов
/ 29 марта 2012

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

0 голосов
/ 29 марта 2012

Вы можете сделать это так

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 голосов
/ 29 марта 2012

для каждого из ваших элементов GUI вы должны получить текст, а для открытого XML и разобрать его, проверьте ЭТОТ КОД , это будет полезно

...