Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Формат xml документа и работа с ним / 5 сообщений из 5, страница 1 из 1
12.07.2006, 20:14
    #33849341
diablero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат xml документа и работа с ним
Доброго времени суток!
Есть такая задача:
Нужно хранить инфу о хосте. IP, имя хоста, список подмонтированных устройств (устройство => файловая система).
Какую структуру должен иметь xml документ, как его создать?
...
Рейтинг: 0 / 0
13.07.2006, 10:08
    #33849925
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат xml документа и работа с ним
Да вобщем то как тебе удобнее или если не один разрабатываешь, то как договоритесь, например хранение данных о серверах:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<main>
  <servers>
    <OracleServer>
      <Name>TEST</Name>
      <Address> 10 . 1 . 10 . 1 </Address>
      <Port> 1521 </Port>
      <Login>test</Login>
      <Password>test</Password>
    </OracleServer>
    ...
  <servers>
</main>
а еще лучше для хранения (записи и чтения xml) с определенным форматом использовать JAXB2.0, тогда тебе будет нужно создать класс хранения нужных настроек, затолкать в коллекцию, а JAXB эту коллекцию превратит в xml и обратно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 package  test;

 import  javax.xml.bind.annotation.*;

 public   class  IPProperties{
 private  String ip;

 public   void  setIP(String ip) {
 this .ip = ip;
}
 public  String getIP() {
 return  ip;
}
}
...
Рейтинг: 0 / 0
13.07.2006, 11:32
    #33850254
diablero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат xml документа и работа с ним
Мне нужно хранить на серваке инфу о хостах, и при подключении клиента сравнивать её, если б не xml будь он не ладен, давно бы уже сделал ...
Вот такая будет структура файла, зацените ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<hosts>
 <host id="h0001">
   <prop name="hostname">comp1</prop>
   <prop name="hostadress"> 192 . 168 . 0 . 1 </prop>
    <device>
     <dev name="C">NTFS</dev>
     <dev name="D">FAT32</dev>
     <dev name="E">FAT32</dev>
    </device>
 </host>
</hosts>

Клиент передает серваку инфу о себе в xml формате.
На стороне клиента ее надо создовать, а на серваке проверять
это вроде лишнее:
Код: plaintext
<host id="h0001">
токо как их всех различать?
Начну писать с этого примерчика:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
 import  javax.xml.parsers.DocumentBuilderFactory;
 import  javax.xml.parsers.DocumentBuilder;
 import  javax.xml.parsers.ParserConfigurationException;
 import  org.w3c.dom.Document;
 import  org.xml.sax.SAXException;
 import  java.io.IOException;
 import  org.w3c.dom.NodeList;
 import  org.w3c.dom.Node;

 public   class  Test_dtd {
     public  Test_dtd() {
    }

     public   static   void  main(String[] args) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(true);
        factory.setIgnoringElementContentWhitespace(true);
        factory.setIgnoringComments(true);

        DocumentBuilder builder =  null ;
         try  {
            builder = factory.newDocumentBuilder();
        }  catch  (ParserConfigurationException e) {
            e.printStackTrace();
        }

        Document domDocument =  null ;
         try  {
            domDocument = builder.parse("xxx.xml");
        }  catch  (SAXException e) {
            e.printStackTrace();
        }  catch  (IOException e) {
            e.printStackTrace();
        }

        NodeList nodeList = domDocument.getElementsByTagName("id");
        
        System.out.println(nodeList.getLength());

         for ( int  i =  0 ; i < nodeList.getLength(); i++) {

            Node node = nodeList.item(i);
            NodeList childNodeList = node.getChildNodes();

             for ( int  j =  0 ; j < childNodeList.getLength(); j++) {
                Node childNode = childNodeList.item(j);
                System.out.println((childNode.getTextContent()));
            }
        }
    }
}
Прошу советов ...
...
Рейтинг: 0 / 0
13.07.2006, 14:52
    #33851215
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат xml документа и работа с ним
Например в таком формате:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<storageHost>
 <hostAL>
  <deviceAL>
    <name>C</name>
    <type>NTFS</type>
  </deviceAL>
  <deviceAL>
   <name>D</name>
   <type>ext3:)</type>
  </deviceAL>
  <ip> 10 . 0 . 1 . 1 </ip>
  <name>host1</name>
 </hostAL>
 <hostAL>
  <deviceAL>
    <name>C</name>
    <type>NTFS</type>
  </deviceAL>
  <deviceAL>
    <name>D</name>
    <type>ext3:)</type>
  </deviceAL>
  <ip> 10 . 0 . 1 . 2 </ip>
  <name>host2</name>
 </hostAL>
</storageHost>


Это работает с XML через JAXB
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
 import  javax.xml.bind.*;
 import  java.io.*;
 import  java.sql.*;
 import  java.util.*;
 import  techtip.test.*;
 import  javax.xml.parsers.*;

 import  org.w3c.dom.*;
 import  org.xml.sax.*;
 import  javax.xml.transform.TransformerFactoryConfigurationError;

 public   class  TestStorageHost {
/*
 * TestJAXB.java
 *
 * Created on 20 Июнь 2006 г., 9:59
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */


     public   static   void  main(String[] in){
         new  TestStorageHost();
    }
    
    
    /** Creates a new instance of TestStorageHost */
     public  TestStorageHost() {
    

         try  {
            DocumentBuilderFactory  docBuidFact = DocumentBuilderFactory.newInstance();
            Document newDocument = docBuidFact.newDocumentBuilder().newDocument();
            StorageHost storage =  new  StorageHost();
            //StorageSQL storageSQL = new StorageSQL();
            ArrayList<Host> storAL =  new  ArrayList<Host>();
            storAL.add(getValueHost("host1","10.0.1.1"));
            storAL.add(getValueHost("host2","10.0.1.2"));
            storage.setHostAL(storAL);
            JAXBContext context =
                    JAXBContext.newInstance( StorageHost. class );
            Marshaller marshaller = context.createMarshaller();            
            String fileName = "C:\\development\\jbproject\\TestJAXB\\data.xml ";
            FileOutputStream fileOut =  new  FileOutputStream(fileName);                    
            //В файл                        
            marshaller.marshal(storageSQL, fileOut);
            fileOut.close();
            marshaller.marshal(storage,System.out);// newDocument);
            //из файла          
            FileInputStream fileIn =  new  FileInputStream(fileName);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StorageSQL resSQL = (StorageSQL)unmarshaller.unmarshal(fileIn);
            System.out.println();
            System.out.println(resSQL.getStorageAL().size());
             for  ( int  i =  0 ; i< resSQL.getStorageAL().size();i++){
                System.out.println(resSQL.getStorageAL().get(i));
            }
        }  catch  (Exception ex) {
            ex.printStackTrace();
        }
    }

     private  Host getValueHost(String name, String ip) {
        Host val1 =  new  Host();
        val1.setIp(ip);
        val1.setName(name);
        ArrayList<Device> devAL =  new  ArrayList<Device>();        
        devAL.add(getDevice("C","NTFS"));
        devAL.add(getDevice("D","ext3:)"));
        val1.setDeviceAL(devAL);
         return  val1;
    }    

     private  Device getDevice(String name, String type) {
        Device dev =  new  Device();
        dev.setName(name);
        dev.setType(type);
         return  dev;
    }
    
}

Это хранилища
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 public   class  Device {
     private  String name;
     private  String type;
    /** Creates a new instance of Device */
     public  Device() {
    }
    
     public  String getName(){
         return  name;
    }
    
     public   void  setName(String name){
         this .name = name;
    }
    
     public  String getType(){
         return  type;
    }
    
     public   void  setType(String type){
         this .type = type;
    }    
}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
 import  java.util.*;

 public   class  Host {
     private  ArrayList<Device> deviceAL;
    /** Creates a new instance of Host */
     private  String id;
     private  String name;
     private  String ip;
     public  Host() {
    }
     public   void  setIp(String ip){
         this .ip = ip;
    }
    
     public  String getIp(){
         return  ip;
    }
    
     public   void  setName(String name){
         this .name = name;
    }
    
     public  String getName(){
         return   this .name;
    }
    
     public   void  setDeviceAL(ArrayList<Device> deviceAL){
         this .deviceAL = deviceAL;
    }

     public  ArrayList<Device>  getDeviceAL(){
        return  deviceAL;
    }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 import  java.util.*;
 import  javax.xml.bind.annotation.*;
@XmlRootElement
 public   class  StorageHost {
     private  ArrayList<Host> hostAL;

     public  ArrayList<Host> getHostAL(){
         return   this .hostAL;
    }
    
     public   void  setHostAL(ArrayList<Host> hostAL){
         this .hostAL = hostAL;
    }
    
}
...
Рейтинг: 0 / 0
13.07.2006, 16:13
    #33851615
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формат xml документа и работа с ним
Извиняюсь, :) где StorageSQL читать StorageHost
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Формат xml документа и работа с ним / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]