powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Формат xml документа и работа с ним
5 сообщений из 5, страница 1 из 1
Формат xml документа и работа с ним
    #33849341
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Есть такая задача:
Нужно хранить инфу о хосте. IP, имя хоста, список подмонтированных устройств (устройство => файловая система).
Какую структуру должен иметь xml документ, как его создать?
...
Рейтинг: 0 / 0
Формат xml документа и работа с ним
    #33849925
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вобщем то как тебе удобнее или если не один разрабатываешь, то как договоритесь, например хранение данных о серверах:
Код: 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
Формат xml документа и работа с ним
    #33850254
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно хранить на серваке инфу о хостах, и при подключении клиента сравнивать её, если б не 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
Формат xml документа и работа с ним
    #33851215
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например в таком формате:
Код: 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
Формат xml документа и работа с ним
    #33851615
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, :) где StorageSQL читать StorageHost
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Формат xml документа и работа с ним
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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