/*Игра в "Угадай-ка" - по сканированному тексту в книжке попробуй разгляди, что есть что. В общем, какой тег за что отвечает осталось неясно*/ 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); }
//здесь формируем выходной файл 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); }
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"); }
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); }