1 |
using System; |
2 |
using System.Collections.Generic; |
3 |
using System.Linq; |
4 |
using System.Text; |
5 |
using libxmltv.Interfaces; |
6 |
using System.IO; |
7 |
using Enterprise.Logging; |
8 |
using System.Xml.Linq; |
9 |
using System.Xml; |
10 |
|
11 |
namespace libxmltv.Core |
12 |
{ |
13 |
internal class XMLTVLoader : XMLTVBase<XMLTVRuntimeInstance>, IDisposable |
14 |
{ |
15 |
//private string xmlfile = string.Empty; |
16 |
public XMLTVLoader(string xml_file) : base(null, xml_file) { } |
17 |
protected XMLTVLoader(string xml_file, XMLTVRuntimeInstance instance) |
18 |
: base(instance, xml_file) |
19 |
{ |
20 |
xmltv_logger.Debug.WriteLine("Creating Instance of XMLTVLoader"); |
21 |
var fi = new FileInfo(xml_file); |
22 |
this.GetInstance().XmlFile_FullName = fi.FullName; |
23 |
this.GetInstance().XmlFile_Name = fi.Name; |
24 |
LoadXml(); |
25 |
xmltv_logger.Debug.WriteLine("Created Instance of XMLTVLoader"); |
26 |
} |
27 |
|
28 |
private void LoadXml() |
29 |
{ |
30 |
xmltv_logger.Info.WriteLine("Loading XMLTV File: {0}", this.GetInstance().XmlFile_Name); |
31 |
//xmltv_logger.Warn.WriteLine("XML File Loading has not been implemented yet!"); |
32 |
try |
33 |
{ |
34 |
var document = XDocument.Load(this.GetInstance().XmlFile_FullName); |
35 |
using (var ms = new MemoryStream()) |
36 |
using (var xw = new XmlTextWriter(ms, Encoding.UTF8)) |
37 |
{ |
38 |
document.Save(xw); |
39 |
xw.Flush(); |
40 |
StreamReader sr = new StreamReader(ms); |
41 |
ms.Seek(0, SeekOrigin.Begin); |
42 |
this.GetInstance().XmlDoc = sr.ReadToEnd(); |
43 |
} |
44 |
document = null; |
45 |
} |
46 |
catch (Exception ex) |
47 |
{ |
48 |
xmltv_logger.Error.WriteLine("Failed to load XMLTV File: {0}", this.GetInstance().XmlFile_Name); |
49 |
xmltv_logger.Error.WriteLine(ex.GetBaseException().ToString()); |
50 |
} |
51 |
} |
52 |
|
53 |
public void Dispose() |
54 |
{ |
55 |
//throw new NotImplementedException(); |
56 |
} |
57 |
|
58 |
|
59 |
} |
60 |
} |