Пример #1
0
        /*Игра в "Угадай-ка" - по сканированному тексту в книжке попробуй разгляди, что есть что. В общем, какой тег за что отвечает осталось неясно*/
        public static void convertAddToXml(List<AddPatent> addpatent, string filept)
        {
            Patent patent = new Patent();//создаем новую структуру
            /*Очередь "drawings" тегов*/
            patent.drawings = new Drawings_();
            patent.drawings.DrawingsList = new List<string>();
            patent.relatesPatents = new RelatesPatents();
            patent.relatesPatents.RelatesPatentList = new List<RelatesPatent>();

            patent.relatesForeignPatents = new RelatesForeignPatents();
            patent.relatesForeignPatents.RelatedForeignPatentList = new List<RelatedForeignPatent>();
            int k = 0; //это для ситуации с несколькими LPAR
            //далее заполняем все части нового xml документа
            /*как тут можно увидеть, данных практически нет >< что откуда брать? Оо*/
            for (int i=0; i<addpatent.Count; i++)
            //foreach (AddPatent addpatent_ in addpatent)  //для каждого элемента списка проверяем тег и записываем в соответствующую структуру xml
            {

                if (addpatent[i].tag_.Equals("WKU"))
                {
                    patent.number = addpatent[i].tagcontain.Substring(2);
                }
                if (addpatent[i].tag_.Equals("UREF"))
                {
                    RelatesPatent rp = new RelatesPatent();
                    i++;
                    rp.number = addpatent[i].tagcontain.Substring(2);
                    i++;
                    rp.date = addpatent[i].tagcontain.Substring(2);
                    i++;
                    rp.class_ = addpatent[i].tagcontain.Substring(2);
                    i++;
                    patent.relatesPatents.RelatesPatentList.Add(rp);
                }
                if (addpatent[i].tag_.Equals("FREF"))
                {
                    RelatedForeignPatent rp = new RelatedForeignPatent();
                    i++;
                    rp.number = addpatent[i].tagcontain.Substring(2);
                    i++;
                    rp.date = addpatent[i].tagcontain.Substring(2);
                    i++;
                    rp.class_ = addpatent[i].tagcontain.Substring(2);
                    i++;
                    patent.relatesForeignPatents.RelatedForeignPatentList.Add(rp);
                }
                if (addpatent[i].tag_.Equals("DID"))
                {
                    patent.country = addpatent[i].tagcontain.Substring(2,2);
                }
                if (addpatent[i].tag_.Equals("TTL"))  //это ли заголовок?
                {
                    patent.title = addpatent[i].tagcontain.Substring(2);
                    patent.titleEng = addpatent[i].tagcontain.Substring(2);
                }
                if (addpatent[i].tag_.Equals("PAL"))
                {
                    patent.drawings.DrawingsList.Add(addpatent[i].tagcontain.Substring(2));
                }
            }

            Console.WriteLine("Converting ADD to XML complete...");
            WriteXML(patent, filept);
        }
Пример #2
0
        //здесь формируем выходной файл xml to xml
        public static void convertXmlToXml(UsPatentGrant UsPatentGrants, FileInfo fileName, string dir)
        {
            /*Во всех закомментированных строках либо нет данных, из которых их заполнять, либо же непонятно просто, откуда берутся данные (конкретно)*/
            Patent patent = new Patent();//создаем новую структуру
            //далее заполняем все части нового xml документа
            patent.number = UsPatentGrants.file.Substring(2, 8);
            patent.country = UsPatentGrants.country;
            patent.kind = UsPatentGrants.UsBibliographicDataGrant.PublicationReference.DocumentId.kind;
            patent.lang = UsPatentGrants.lang;
            patent.date = UsPatentGrants.datepubl;
            patent.appdate = UsPatentGrants.dateproduced;
            //patent.appKind = ;
            //patent.appNumber = ;
               // patent.disclaimerDate = ;
            //Следующие четыре составляющиа также пока неясно из чего заполнять. Заполнить то легко, но вопрос: а из чего?
              // patent.classificationIpcMain.section = UsPatentGrants.UsBibliographicDataGrant.ClassificationIpc.mainClassification;
            //patent.classificationIpcAdditional = ;
            /*patent.classificationUSsection = ;
            patent.classificationUSadditional = ;*/

            patent.title = UsPatentGrants.UsBibliographicDataGrant.InventionTitle.invtitle;
            patent.titleEng = UsPatentGrants.UsBibliographicDataGrant.InventionTitle.invtitle;
            //patent.relatesPatents = ;    //
               // patent.relatesForeignPatents = ;   //Опять же, это и выше строка - откуда берем инфу?
            patent.authors = new Authors();
            patent.authors.AuthorList = new List<Author>();
            string fio = UsPatentGrants.UsBibliographicDataGrant.Parties.Applicants.Applicant[0].AddressBook.firstName + " "
                + UsPatentGrants.UsBibliographicDataGrant.Parties.Applicants.Applicant[0].AddressBook.lastName;
            Author auth = new Author();
            auth.name = fio;
            auth.author_ = fio;
            patent.authors.AuthorList.Add(auth);
            patent.company = UsPatentGrants.UsBibliographicDataGrant.Parties.Agents.Agent[0].AddressBook.origName; //т.к. точно не удалось понять, где же прячется "компания", то берем из Agents тег origname (вероятно, это оно и есть?)
            //patent.description = ;           //по описанию в файле xml - это еще один подчиненный элемент. У меня нет схемы dtd и других файлов, чтоб этот момент проверить
            //patent.descriptionShort = ;      //для abstract (аннотация) у нас тоже нет данных
               // patent.abstract_ = ;    //для этого содержимого во входном файле нет подходящих элементов, к сожалению
               // patent.abstractEng = ;

            patent.claims = new Claims_();
            patent.claims.ClaimList = new List<Claim_>();
            foreach (Claim claim in UsPatentGrants.Claims.Claim)
            {
                Claim_ claim_new  = new Claim_();

                claim_new.id = claim.id;
                claim_new.num = claim.num;
                claim_new.ClaimText__ = new List<ClaimText_>();
                foreach (ClaimText cltxt in claim.ClaimText)
                {
                    ClaimText_ claimtxt = new ClaimText_();
                    claimtxt.txt = cltxt.txt;
                    ClaimRef_ clnew = new ClaimRef_();
                    //clnew.idref = cltxt.claimref.idref;
                    //clnew.txt = cltxt.claimref.txt;
                    claimtxt.claimref = clnew;

                    claim_new.ClaimText__.Add(claimtxt);
                }

                patent.claims.ClaimList.Add(claim_new);
            }

            /*Тут нужно дальше сгенерировать группу Tables, но на основании чего?*/

            /*Очередь "drawings" тегов*/
            patent.drawings = new Drawings_();
            patent.drawings.DrawingsList = new List<string>();
            foreach (P p_ in UsPatentGrants.Description.DescriptionOfDrawings.P)
            {
                patent.drawings.DrawingsList.Add(p_.txt);
            }
            string filepath = dir + "\\" + fileName.Name.Remove(fileName.Name.Length - fileName.Extension.Length) + "_modif" + ".xml";  //сформируем  имя модифицированного файла

               // System.IO.File.Delete(fileName.FullName);
            Console.WriteLine("Converting XML to XML complete...");
            WriteXML(patent, filepath);
        }
Пример #3
0
 public static void WriteXML(Patent patent, string fileName)
 {
     //создаем новый XML файл на основании структуры
     System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Patent));
     System.IO.StreamWriter file = new System.IO.StreamWriter(fileName);
     writer.Serialize(file, patent);
     file.Dispose();
     file.Close();
     Console.WriteLine("Save XML file complete, press key...");
     //Compress(dir);
     file.Dispose();
     //System.IO.Directory.Delete(dir);
     Console.ReadKey();
     Console.WriteLine("\n");
 }
Пример #4
0
        public static void convertSgmlToXml(Patdoc patdoc, FileInfo fileName, string dir)
        {
            WriteSg(patdoc);
            /*Во всех закомментированных строках либо нет данных, из которых их заполнять, либо же непонятно просто, откуда берутся данные (конкретно)*/
            Patent patent = new Patent();//создаем новую структуру
            //далее заполняем все части нового xml документа
            patent.number = patdoc.Sdobi.B100.B110.dnum.pdat;
            patent.country = patdoc.Sdobi.B100.B190.pdat;
            patent.kind = patdoc.Sdobi.B100.B130.pdat;
             //       patent.lang = ;    //нужен тег B051 если я все верно поняла
            patent.date = patdoc.Sdobi.B100.B140.date_.pdat;
            patent.appdate = patdoc.Sdobi.B200.B220.date_.pdat;
            patent.appKind = patdoc.Sdobi.B200.B211US.pdat;
            patent.appNumber = patdoc.Sdobi.B200.B210.dnum.pdat;
            // patent.disclaimerDate = ;   //нужен тег B473
            //Следующие четыре составляющиа также пока неясно из чего заполнять. Заполнить то легко, но вопрос: а из чего?
               //  patent.classificationIpcMain = ;
             /*patent.classificationIpcAdditional = ;
             patent.classificationUSsection = ;
             patent.classificationUSadditional = ;*/

            patent.title = patdoc.Sdobi.B500.B540.stext.pdat;
            patent.titleEng = patdoc.Sdobi.B500.B540.stext.pdat;
            //patent.relatesPatents = ;    //
            // patent.relatesForeignPatents = ;   //Опять же, это и выше строка - откуда берем инфу?
            patent.authors = new Authors();
            patent.authors.AuthorList = new List<Author>();
            string fio = patdoc.Sdobi.B700.B720.B721.PartyUs.Nam.Fnm.pdat + " " + patdoc.Sdobi.B700.B720.B721.PartyUs.Nam.Snm.stext.pdat;
            Author auth = new Author();
            auth.name = fio;
            auth.author_ = fio;
            patent.authors.AuthorList.Add(auth);
            patent.company = patdoc.Sdobi.B700.B740.B741.PartyUs.Nam.Onm.stext.pdat;
            //patent.description = ;
            //patent.descriptionShort = ;
            // patent.abstract_ = ;
            // patent.abstractEng = ;

            patent.claims = new Claims_();
            patent.claims.ClaimList = new List<Claim_>();
            for (int i = 0; i < Convert.ToInt32(patdoc.Sdobi.B500.B570.B577.pdat); i++)
            {
                Claim_ claimnew = new Claim_();
                claimnew.cltxt = patdoc.Sdodl.Cl.Clm.Para.Ptext.pdat;
                patent.claims.ClaimList.Add(claimnew);
            }

            /*Тут нужно дальше сгенерировать группу Tables, но на основании чего?*/

            /*Очередь "drawings" тегов*/
            patent.drawings = new Drawings_();
            patent.drawings.DrawingsList = new List<string>();
            for (int i = 0; i < Convert.ToInt32(patdoc.Sdobi.B500.B590.B595.pdat); i++)
            {
                patent.drawings.DrawingsList.Add(patdoc.Sdode.Drwdesc.Btext.Para.Ptext.pdat);
            }
            string filepath = dir + "\\" + fileName.Name.Remove(fileName.Name.Length - fileName.Extension.Length) + "_modif" + ".xml";  //сформируем  имя модифицированного файла

            System.IO.File.Delete(fileName.FullName);
            Console.WriteLine("Converting XML to XML complete...");
            WriteXML(patent, filepath);
        }