4 Replies Latest reply on Mar 8, 2017 12:50 AM by Liphou

    [JS] lecture XML

    Liphou Level 1

      Bonjour,

       

      Je ne maîtrise pas le lecture de fichiers XML qui a ce type de balise ex "w:Body"

       

      Je fait basiquement le suppression des "w:".

      Y a-t-il un autre manière de faire un configuration du "XML.settings"  ou autre ??

       

      Merci

        • 1. Re: [JS] lecture XML
          Loic.Aigon Adobe Community Professional

          Hello,

           

          Ce "w:" est un prefixe lié à un espace de nom (namespace en anglais). Un nom de balise peut dès lors être associé à un espace donné et donc ton xml disposer de plusieurs nœuds de même nom mais chacun différents:

           

          ex <a:nom> et <b:nom>

           

          Ta solution est comme tu l'as indiqué de supprimer les espaces de noms ou de les prendre en compte dans ta recherche.

           

          ex: monXML.descendants("w:Body");

           

          Loic

          • 2. Re: [JS] lecture XML
            Liphou Level 1

            Merci Loic pour ce debut de piste ...

             

            je travail souvent l'xml en E4X (si je m'exprime bien !!)

             

            exemple de code exemple :

            var testTableau = String(tableau01.table.(@name=="TestNew").row[0].cell.cellBordure.topEdge.text())).split('|')[3];
            

             

             

            je cherche à très les XML d'un docx (j’étais sur une très bonne piste en perl), je repart de zéro en Javascript.

             

            j'ouvre mon XML avec cette function mais je paire me espace entre les balise (ex: <w:t xml:space="preserve">Philou </w:t> -> <w:t xml:space="preserve">Philou</w:t>)

             

            au passe, je te remercie pour le cote de l’écriture du log dans un fichier texte. (il me reste plus cas le faire passé dans la fenêtre du terminal en temps réel).

             

            // function ouverture du fichier XML et reteuren 
            function monOpenXML (leFichier) {
                // test fichier et ouveture du fichier Convetion XML
               
               if (leFichier.exists) {
                                leFichier.open("r","UTF-8");
                            var XMLToleFichier = leFichier.read();
                                leFichier.close();
                                var XMLsettings = XML.settings;
                           
                            //XMLsettings.ignoreWhitespace = false;
                            XMLsettings.ignoreWhitespace = true; // si pas remis sur True Problème
                            //XMLsettings.prettyPrinting = false;
                            XML.setSettings(XMLsettings);
                            //XMLToParse = suprimeBalies(XMLToParse);
                            //$.writeln (XMLToParse);
                            o.leXML = new XML(XMLToleFichier);
                             XMLToleFichier = null;
                            log("Lecture du fichier " + leFichier.name+ " :  OK."); 
                             //$.writeln (leLog);
                            
                            return (true);
                        
                         
                                
                    } else {
                            alert("Error overture du fichier  XML. (" + leFichier.name + ")"  );
                            exit();
                    }   
             }//
            //
            

             

            Je travail beaucoup avec des exemples et de test innombrables .

             

            Pour tester: comment récupéré la valeur de l'attribut "w:val" qui est "Titre1" de "w:pPr", si je sais déjà faire ça! je pourrait faire beaucoup plus de teste.

             

             

            Auriez-vous un site de référence pour cette manière de manipulé ???  

             

             

             

             

            <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">
              <w:body>
                <w:p w:rsidR="000927A9" w:rsidRDefault="009A4EA5" w:rsidP="009A4EA5">
                  <w:pPr>
                    <w:pStyle w:val="Titre1"/>
                  </w:pPr>
                  <w:r>
                    <w:t>Philou w:titre 01</w:t>
                  </w:r>
                  <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                  <w:bookmarkEnd w:id="0"/>
                </w:p>
                <w:p w:rsidR="009A4EA5" w:rsidRDefault="009A4EA5" w:rsidP="009A4EA5">
                  <w:r>
                    <w:t xml:space="preserve">Philou</w:t>
                  </w:r>
                  <w:r>
                    <w:t>paragraphe01</w:t>
                  </w:r>
                </w:p>
                <w:p w:rsidR="009A4EA5" w:rsidRDefault="009A4EA5" w:rsidP="009A4EA5">
                  <w:r>
                    <w:t xml:space="preserve">Philou</w:t>
                  </w:r>
                  <w:r w:rsidRPr="009A4EA5">
                    <w:rPr>
                      <w:b/>
                    </w:rPr>
                    <w:t>paragraphe01</w:t>
                  </w:r>
                  <w:r>
                    <w:t xml:space="preserve">avec Gras</w:t>
                  </w:r>
                </w:p>
                <w:p w:rsidR="009A4EA5" w:rsidRDefault="009A4EA5" w:rsidP="009A4EA5">
                  <w:r>
                    <w:t xml:space="preserve">Philou</w:t>
                  </w:r>
                  <w:r w:rsidRPr="009A4EA5">
                    <w:rPr>
                      <w:i/>
                    </w:rPr>
                    <w:t>paragraphe01</w:t>
                  </w:r>
                  <w:r>
                    <w:t xml:space="preserve">avec Italique</w:t>
                  </w:r>
                </w:p>
                <w:p w:rsidR="009A4EA5" w:rsidRDefault="009A4EA5"/>
                <w:sectPr w:rsidR="009A4EA5">
                  <w:pgSz w:w="11906" w:h="16838"/>
                  <w:pgMar w:top="1417" w:right="1417" w:bottom="1417" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/>
                  <w:cols w:space="708"/>
                  <w:docGrid w:linePitch="360"/>
                </w:sectPr>
              </w:body>
            </w:document>
            

             

             

            Un très grand merci Loïc, là, un grosse avenece pour moi si je parviens à manipulé de cette manière .

            • 3. Re: [JS] lecture XML
              Loic.Aigon Adobe Community Professional
              o.leXML.xpath( ".//w:pStyle/@w:val" );
              

               

               

              Loic

              www.ozalto.com

              • 4. Re: [JS] lecture XML
                Liphou Level 1

                Bonjour Loic,

                 

                après quelques tests l'utilisation avec le xpath, je ne maitrise pas du tout ... paqs simple pour moi ...

                j'ai donc continué sur l'idée de remplacer l'espace de nom (ex w:pStyle -> w_pStyle) et là, je maitrise un peux plus.

                 

                function monOpenXML (leFichier) {
                    // test fichier et ouveture du fichier Convetion XML
                  var enTete = new RegExp(/<w:document(([^>]*))>\n|<\/w:document>|<\?xml ver[^>]+\?>\n/g);
                  var leBalise = new RegExp(/<[^>]+>/g);
                    //var enTete2 = "<\?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>";
                  if (leFichier.exists) {
                               leFichier.open("r","UTF-8");
                          var XMLToleFichier = leFichier.read();
                                leFichier.close();
                                XMLToleFichier = XMLToleFichier.replace(enTete,'');
                          var XMLsettings = XML.settings;
                              XMLsettings.ignoreWhitespace = true; // si pas remis sur True Problème
                              XMLsettings.prettyPrinting = false;
                              XML.setSettings(XMLsettings);
                              XMLToleFichier = XMLToleFichier.replace(leBalise, leW);
                    //          $.writeln (XMLToleFichier);
                                o.leXML = new XML(XMLToleFichier);
                             
                                //$.writeln (leLog);
                                return (true);
                        } else {
                                alert("Error overture du fichier  XML. (" + leFichier.name + ")"  );
                                exit();
                        } 
                }//
                //
                function leW(laBalise) {
                    return laBalise.replace(/([a-z]):/g,'$1_')
                 }
                

                 

                Merci pour ton aide