Julss799 / PROJECTE1-DAM2

Projecte 1: Entrega 05/12/2022 - 07/12/2022
1 stars 0 forks source link

Com generar l'XSD #34

Closed ghost closed 1 year ago

Julss799 commented 1 year ago

https://java.hotexamples.com/es/examples/org.w3c.dom/DOMImplementation/createDocument/java-domimplementation-createdocument-method-examples.html

Julss799 commented 1 year ago

https://www.jc-mouse.net/java/generar-esquema-xsd-a-partir-de-clases-java

Julss799 commented 1 year ago

FALATA ASSIGNAR XSD A XML

Formeinstein13 commented 1 year ago

Funcio:

public static String xsd(String[] liniesNoms) {
        //Hem fet la capsalera del xsd
        String xsd="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
                + "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\">\r\n"
                + "  <xs:element name=\"dadesGenerades\">\r\n"
                + "    <xs:complexType>\r\n"
                + "      <xs:sequence>\r\n"
                + "        <xs:element ref=\"dades\"/>\r\n"
                + "      </xs:sequence>\r\n"
                + "    </xs:complexType>\r\n"
                + "  </xs:element>\n"
                + "  <xs:element name=\"dades\">\r\n"
                + "    <xs:complexType>\r\n"
                + "      <xs:sequence>\r\n"
                + "        <xs:element ref=\"Registre\" maxOccurs=\"unbounded\"/>\r\n"
                + "      </xs:sequence>\r\n"
                + "    </xs:complexType>\r\n"
                + "  </xs:element>\r\n"
                + "  <xs:element name=\"Registre\">\r\n"
                + "    <xs:complexType>\r\n"
                + "      <xs:sequence>\n";
        //fem aquest bucle per agafar els noms dels camps per ordre
        for (int i=0;i<liniesNoms.length;i++) {
            xsd=xsd+"        <xs:element name=\""+liniesNoms[i]+"\" type=\"xs:string\"/>\n";
        }
        //fem el tancaments finals
        xsd=xsd+"      </xs:sequence>\r\n"
                + "    </xs:complexType>\r\n"
                + "  </xs:element>\r\n"
                + "</xs:schema>\r";
        return xsd;
    }

Codi afegit al main:

if (linea1Separat[0].equals("XML"))
                {
                    //si el firxer de sortida es XML executarem aquesta funcio per crear el archiu XML corresponent
                    File sortida=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_sortida\\Fitxer_sortida.xsd");
                    xml(dadesGenerades,nombreRegistresGenerar);
                    String text=xsd(liniesNoms);
                    try (FileWriter escriptor =new FileWriter(sortida);) {
                        escriptor.append(text).write('\n');
                    } catch (IOException e) {
                        System.err.println(e.getMessage());
                    }
                }