using System; using System.Xml; using System.IO; using System.Xml.XPath; using System.Xml.Schema; using System.Collections.Generic; namespace AmicEditor { public static class XmlUtils { public static bool ValidaXSD(string fitxer, string doctype){ bool Success = true; try{ XmlReaderSettings settings = new XmlReaderSettings(); //Validem l'XML contra l'XSD Console.WriteLine("Validating XML file "+fitxer+" with schema "+doctype); settings.ValidationType = ValidationType.Schema; settings.Schemas.Add(doctype, XmlReader.Create(doctype)); using (XmlReader xmlValidatingReader = XmlReader.Create(fitxer, settings)) { while (xmlValidatingReader.Read()) { } } return Success; }catch (Exception e){ Console.WriteLine("File "+fitxer+" contains validation errors. Gallery Ignored"); Console.WriteLine(e); return false; } } /* public static XmlDocument LoadXML(string file, string xsd){ // Creem l'objecte XMLDocument i carreguem el document XmlDocument xDoc = new XmlDocument(); xDoc.Load(file); if (ValidaXSD(file, xsd)) return xDoc; else return null; }*/ public static void ValidationHandler(object sender, ValidationEventArgs args) { Console.WriteLine("***Validation Error***"); Console.WriteLine("\tSeverity:{0}", args.Severity); Console.WriteLine("\tMessage:{0}", args.Message); } /* public static XmlDocument LoadPictogramsFrom(string Path, string dir_cathegory){ try{ XmlDocument Pictograms=new XmlDocument(); System.Console.WriteLine("PATH VAL... "+Path); Pictograms=LoadXML(Path, dir_cathegory+"/xsd/cathegory.xsd"); return Pictograms; }catch{ return null; }; }*/ } } /*public class LlegeixXML{ public static void Main(string[] args){ /* * * * * // Creem l'objecte XMLDocument i carreguem el document XmlDocument xDoc = new XmlDocument(); xDoc.Load(file); // Busquem els elemente "themes" i els assignem a un XmlNodeList XmlNodeList temes = xDoc.GetElementsByTagName("themes"); // Dins el primer element (temes[0]) busquem els elements de tipus "theme" XmlNodeList llista_tema = ((XmlElement)temes[0]).GetElementsByTagName("theme"); // Per a cada tema... foreach (XmlElement node in llista_tema) { // Busquem l'InnerText dels nodes amb etiqueta "name", "description" i "folder". // (Si tinguerem altra llista dins, fariem el mateix) string name = (node.GetElementsByTagName("name"))[0].InnerText; string description = (node.GetElementsByTagName("description"))[0].InnerText; string folder = (node.GetElementsByTagName("folder"))[0].InnerText; // Nota: Si en lloc d'elements, són atributs... // Cal usar: string nNombre = nodo.GetAttribute("nombre"); Console.WriteLine("Tema: \t{0}\n\t{1}\n\t{2}", name, description, folder); } } Console.ReadLine(); // Modifiquem XmlNode currNode = xDoc.DocumentElement; XmlElement newTheme=xDoc.CreateElement("theme"); XmlElement newName=xDoc.CreateElement("name"); XmlElement newDesc=xDoc.CreateElement("description"); XmlElement newFolder=xDoc.CreateElement("folder"); newName.InnerText="Nom Nou"; newDesc.InnerText="Descripcio Element Nou"; newFolder.InnerText="Carpeta Nova"; newTheme.AppendChild(newFolder); newTheme.AppendChild(newDesc); newTheme.AppendChild(newName); currNode.FirstChild.AppendChild(newTheme); Console.ReadLine(); // I tornem a mostrar // Busquem els elemente "themes" i els assignem a un XmlNodeList XmlNodeList themes = xDoc.GetElementsByTagName("themes"); // Dins el primer element (temes[0]) busquem els elements de tipus "theme" llista_tema = ((XmlElement)themes[0]).GetElementsByTagName("theme"); // Per a cada tema... foreach (XmlElement nodo in llista_tema) { // Busquem l'InnerText dels nodes amb etiqueta "name", "description" i "folder". // (Si tinguerem altra llista dins, fariem el mateix) string name = (nodo.GetElementsByTagName("name"))[0].InnerText; string description = (nodo.GetElementsByTagName("description"))[0].InnerText; string folder = (nodo.GetElementsByTagName("folder"))[0].InnerText; // Nota: Si en lloc d'elements, són atributs... // Cal usar: string nNombre = nodo.GetAttribute("nombre"); Console.WriteLine("Tema: \t{0}\n\t{1}\n\t{2}", name, description, folder); } } } //XPathNavigator nav = new XPathDocument ("xml/themes.xml").CreateNavigator (); //XPathDocument doc = new XPathDocument ("xml/themes.xml"); /*XmlDocument document=new XmlDocument(); document.Load("xml/themes.xml"); // Busquem els elements de tipus theme a partir de l'arrel XmlElement root = document.DocumentElement; XmlNodeList nodeList = root.GetElementsByTagName("theme"); //Console.WriteLine(nodeList.Item(1).InnerXml); Console.WriteLine(nodeList.Count); /*foreach (XmlNode node in nodes){ Console.WriteLine("a"); }*/ /* namespace LlegirXML { class MainClass { public static void Main (string[] args) { } } }*/