1

私はWebサービスを学んでおり、現在Tomcate6.0環境でJAXBを学んでいます。私はxmlファイルを持っています:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<users>
<user>
    <email>bill@hotmail.com</email>
    <name>Bill Gates</name>
    <password>blahblah</password>
    <gender>male</gender>
</user>
<user>
    <email>joe@bloggs.com</email>
    <name>Joe Bloggs</name>
    <password>foobar</password>
    <gender>male</gender>
</user>
</users>

このファイルは WEB-INF/users.xml にあります。

2 つのフィールドを持つ Blog.java というクラスがあります。

private Users users;
private String filePath;

このクラスには、次のメソッドがあります。

public void setFilePath(String filePath) throws JAXBException, IOException {
    this.filePath = filePath;

    JAXBContext jc = JAXBContext.newInstance(Users.class);
    Unmarshaller u = jc.createUnmarshaller();

    FileInputStream fin = new FileInputStream(filePath);
    this.users = (Users)u.unmarshal(fin);
    fin.close();
}

パスとユーザーを設定します。

そして、この方法:

public void saveUser(String filePath) throws JAXBException, FileNotFoundException {
      // Boilerplate code to convert objects to XML...
      JAXBContext jc = JAXBContext.newInstance(Users.class);
      Marshaller m = jc.createMarshaller();
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
      FileOutputStream fos = new FileOutputStream(filePath);
      m.marshal(users, fos);
}

指定された「filePath」のxmlファイルに書き込みます。

そして最後に、登録ページでユーザーデータを収集し、これらをコーディングした別のページにユーザーを登録しました。

....
<% String filePath = application.getRealPath("WEB-INF/users.xml");%>
....
User user = new User(....);
Blog blog = new Blog();
blog.setFilePath(filePath);
blog.getUsers().addUser(user);//this is a method in Users class to add a user to a list
blog.saveUser(filePath);
....

ただし、これは WEB-INF/users.xml の users.xml ファイルをまったく変更していません。私が見逃したところに誰かアドバイスをくれませんか。

ありがとうございました

4

0 に答える 0