9 |
using System.Xml; |
using System.Xml; |
10 |
|
|
11 |
namespace libxmltv.Core |
namespace libxmltv.Core |
12 |
{ |
{ |
13 |
internal class XMLTVLoader : IDisposable |
internal class XMLTVLoader : XMLTVBase<XMLTVRuntimeInstance>, IDisposable |
14 |
{ |
{ |
15 |
private string xmlfile = string.Empty; |
private string xmlfile = string.Empty; |
16 |
internal static void CreateInstance(string xml_file, XMLTVRuntimeInstance xmltv) |
//internal static void CreateInstance(string xml_file, XMLTVRuntimeInstance xmltv) |
17 |
{ |
//{ |
18 |
using (XMLTVLoader g = new XMLTVLoader(xml_file, xmltv)) { } |
// using (XMLTVLoader g = new XMLTVLoader(xml_file, xmltv)) { } |
19 |
} |
//} |
20 |
private XMLTVRuntimeInstance instance; |
protected XMLTVLoader(string xml_file, XMLTVRuntimeInstance instance) |
21 |
protected XMLTVLoader(string xml_file, XMLTVRuntimeInstance xmltv) |
: base(instance) |
22 |
{ |
{ |
23 |
xmltv_logger.Debug.WriteLine("Creating Instance of XMLTVLoader"); |
xmltv_logger.Debug.WriteLine("Creating Instance of XMLTVLoader"); |
24 |
//string _xmltv; |
var fi = new FileInfo(xml_file); |
25 |
//if (!Internals.VerifyInstance<string>(xmltv, out _xmltv)) { return; } |
this.GetInstance().XmlFile_FullName = fi.FullName; |
26 |
//xmlfile = _xmltv; |
this.GetInstance().XmlFile_Name = fi.Name; |
|
//LoadXml(); |
|
|
instance = xmltv; |
|
|
instance.XmlFile = new FileInfo(xml_file); |
|
27 |
LoadXml(); |
LoadXml(); |
28 |
|
xmltv_logger.Debug.WriteLine("Created Instance of XMLTVLoader"); |
29 |
} |
} |
|
//#region IXMLTV_LOADER |
|
|
//public FileInfo XmlFile { get { return new FileInfo(xmlfile); } } |
|
|
//public XDocument XmlDoc { get; private set; } |
|
|
//#endregion |
|
30 |
|
|
31 |
private void LoadXml() |
private void LoadXml() |
32 |
{ |
{ |
33 |
xmltv_logger.Info.WriteLine("Loading XMLTV File: {0}", instance.XmlFile.Name); |
xmltv_logger.Info.WriteLine("Loading XMLTV File: {0}", this.GetInstance().XmlFile_Name); |
34 |
//xmltv_logger.Warn.WriteLine("XML File Loading has not been implemented yet!"); |
//xmltv_logger.Warn.WriteLine("XML File Loading has not been implemented yet!"); |
35 |
try |
try |
36 |
{ |
{ |
37 |
var document = XDocument.Load(instance.XmlFile.FullName); |
var document = XDocument.Load(this.GetInstance().XmlFile_FullName); |
38 |
using (var ms = new MemoryStream()) |
using (var ms = new MemoryStream()) |
39 |
using (var xw = new XmlTextWriter(ms, Encoding.UTF8)) |
using (var xw = new XmlTextWriter(ms, Encoding.UTF8)) |
40 |
{ |
{ |
42 |
xw.Flush(); |
xw.Flush(); |
43 |
StreamReader sr = new StreamReader(ms); |
StreamReader sr = new StreamReader(ms); |
44 |
ms.Seek(0, SeekOrigin.Begin); |
ms.Seek(0, SeekOrigin.Begin); |
45 |
instance.XmlDoc = sr.ReadToEnd(); |
this.GetInstance().XmlDoc = sr.ReadToEnd(); |
46 |
} |
} |
47 |
document = null; |
document = null; |
48 |
} |
} |
49 |
catch (Exception ex) |
catch (Exception ex) |
50 |
{ |
{ |
51 |
xmltv_logger.Error.WriteLine("Failed to load XMLTV File: {0}", instance.XmlFile.Name); |
xmltv_logger.Error.WriteLine("Failed to load XMLTV File: {0}", this.GetInstance().XmlFile_Name); |
52 |
xmltv_logger.Error.WriteLine(ex.GetBaseException().ToString()); |
xmltv_logger.Error.WriteLine(ex.GetBaseException().ToString()); |
53 |
} |
} |
54 |
} |
} |