159 lines
6.7 KiB
C#
159 lines
6.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.Collections;
|
|
using System.Xml.Linq;
|
|
using System.Reflection;
|
|
using System.Globalization;
|
|
using XMLExtractor;
|
|
|
|
namespace XMLExtractor {
|
|
|
|
public class ReadXML
|
|
{
|
|
// Tags
|
|
private static string XML_ELEMENT_STATIC_VALUES = "capitoli";
|
|
private static string XML_ELEMENT_CHAPTERS = "capitoli";
|
|
private static string XML_ELEMENT_SINGLECHAPTER = "capitolo";
|
|
private static string XML_ELEMENT_SECTIONS = "sezioni";
|
|
private static string XML_ELEMENT_SINGLESECTION = "sezione";
|
|
private static string XML_ELEMENT_PAGES = "pagine";
|
|
private static string XML_ELEMENT_PAGE = "pagina";
|
|
private static string XML_ELEMENT_PARAGRAPHS = "paragrafi";
|
|
private static string XML_ELEMENT_SINGLEPARAGRAPH = "paragrafo";
|
|
private static string XML_ELEMENT_SUBPARAGRAPH = "sottoParagrafi";
|
|
private static string XML_ELEMENT_CHARTS = "charts";
|
|
private static string XML_ELEMENT_SINGLECHART = "chart";
|
|
private static string XML_ELEMENT_CHARTMEDIA = "chartMediaDeiPrezzi";
|
|
private static string XML_ELEMENT_CITIES = "tableCittaPrincipali";
|
|
private static string XML_ELEMENT_IMAGES = "images";
|
|
private static string XML_ELEMENT_SINGLEIMAGE = "image";
|
|
private static string XML_ELEMENT_VALUES = "aspettativeValoriImmobili";
|
|
private static string XML_ELEMENT_VARIABLE = "aspettativeVariazioneValore";
|
|
private static string XML_ELEMENT_EVOLUTION = "tableEvoluzione";
|
|
private static string XML_ELEMENT_IMPOSTA = "tableImposta";
|
|
|
|
public static int idCapitolo { get; set; }
|
|
public static int idSezione { get; set; }
|
|
public static int idOrdinamento { get; set; }
|
|
public static int idPagina { get; set; }
|
|
|
|
|
|
// Tags List
|
|
public static List<String> tagList = new List<String>(new[]{
|
|
XML_ELEMENT_CHAPTERS, XML_ELEMENT_SINGLECHAPTER, // Chapters
|
|
XML_ELEMENT_SECTIONS, XML_ELEMENT_SINGLESECTION, // Sections
|
|
XML_ELEMENT_PAGES, XML_ELEMENT_PAGE, // Pages
|
|
XML_ELEMENT_PARAGRAPHS, XML_ELEMENT_SINGLEPARAGRAPH, // Paragraphs
|
|
XML_ELEMENT_CHARTS, XML_ELEMENT_SINGLECHART, XML_ELEMENT_CHARTMEDIA, // Charts
|
|
XML_ELEMENT_IMAGES, XML_ELEMENT_SINGLEIMAGE, // Images
|
|
XML_ELEMENT_VALUES, XML_ELEMENT_VARIABLE, // Keys & values for graphs
|
|
XML_ELEMENT_CITIES, XML_ELEMENT_EVOLUTION, XML_ELEMENT_IMPOSTA}); // Tables
|
|
|
|
// Extracted data class
|
|
public static Data data = new Data();
|
|
public static Data dataNucleo = new Data();
|
|
|
|
/// <summary>
|
|
/// XML File Reader
|
|
/// </summary>
|
|
public ReadXML()
|
|
{
|
|
// idCapitolo '1' and '2' belong to Copertina and Indice
|
|
idCapitolo = idPagina = 3;
|
|
idSezione = idOrdinamento = 1;
|
|
XmlTextReader reader = new XmlTextReader(Utility.PATH_XML);
|
|
reader.WhitespaceHandling = WhitespaceHandling.Significant;
|
|
reader.Read();
|
|
reader.Read();
|
|
string rs = reader.ReadOuterXml();
|
|
XmlDocument doc = new XmlDocument();
|
|
doc.LoadXml(rs);
|
|
XmlNode node = doc.DocumentElement;
|
|
extractTag(node, XML_ELEMENT_CHAPTERS);
|
|
dataNucleo = data;
|
|
data.writeTables();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Extraction of the tag's children
|
|
/// </summary>
|
|
public static void extractTag(XmlNode child, string tag)
|
|
{
|
|
foreach (XmlNode chldNode in child.ChildNodes)
|
|
{
|
|
if (chldNode.Name.Equals(tag))
|
|
{
|
|
var nameAttribute = chldNode.Name;
|
|
if (nameAttribute != null)
|
|
takeRightDB(chldNode, tag);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Given the tag, it selects the right extractor object
|
|
/// </summary>
|
|
public static void takeRightDB(XmlNode attribute, string tag)
|
|
{
|
|
switch (tag)
|
|
{
|
|
case "capitoli":
|
|
extractTag(attribute, XML_ELEMENT_SINGLECHAPTER);
|
|
break;
|
|
case "capitolo":
|
|
Chapter.writeChapter(attribute, tagList, XML_ELEMENT_SINGLESECTION, data);
|
|
idSezione = 1;
|
|
break;
|
|
case "sezione":
|
|
Section.writeSection(attribute, tagList, "", data);
|
|
break;
|
|
case "pagina":
|
|
Page.writePage(attribute, tagList, "", data);
|
|
break;
|
|
case "paragrafi":
|
|
extractTag(attribute, XML_ELEMENT_SINGLEPARAGRAPH);
|
|
break;
|
|
case "paragrafo":
|
|
Paragraph.writeParagraph(attribute, tagList, "", data);
|
|
break;
|
|
case "charts":
|
|
extractTag(attribute, XML_ELEMENT_SINGLECHART);
|
|
break;
|
|
case "chart":
|
|
Chart.writeChart(attribute, tagList, "", data);
|
|
break;
|
|
case "chartMediaDeiPrezzi":
|
|
ChartMediaDeiPrezzi.writeChartMediaDeiPrezzi(attribute, tagList, "", data);
|
|
break;
|
|
case "images":
|
|
extractTag(attribute, XML_ELEMENT_SINGLEIMAGE);
|
|
break;
|
|
case "image":
|
|
Image.writeImage(attribute, tagList, "", data);
|
|
break;
|
|
case "tableCittaPrincipali":
|
|
TableCittaPrincipali.writeCittaPrincipali(attribute, tagList, "", data);
|
|
break;
|
|
case "aspettativeValoriImmobili":
|
|
AspettativeValoriImmobili.writeAspettativeValoriImmobili(attribute, tagList, "", data);
|
|
break;
|
|
case "aspettativeVariazioneValore":
|
|
AspettativeVariazioneValore.writeAspettativeVariazioneValore(attribute, tagList, "", data);
|
|
break;
|
|
case "tableEvoluzione":
|
|
TableEvoluzione.writeTableEvoluzione(attribute, tagList, "", data);
|
|
break;
|
|
case "tableImposta":
|
|
TableImposta.writeTableImposta(attribute, tagList, "", data);
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|