namespace TestXMLHelper {
using System;
using System.XML;
using System.Collections;
using RobBirdwell.XMLHelper;
/*******
The following classes serve as a simple test app for the XMLHelper module.
It attempts to load "MyTestObj.XML" - the text for this is at the bottom
of this listing.
This is a work in progress and provided solely to test and learn C#.
********/
class TestXMLHelper // Test class for XMLHelper
{
static int Main(string[] args)
{
Console.WriteLine("Begin XML Load test...");
MyManager nm = new MyManager();
if (nm.Load() == true)
Console.WriteLine("End Load Test - XML Data Loaded Successfully!");
else
Console.WriteLine("End Load Test - XML Load FAILED!");
Console.WriteLine("Begin XML Create test...");
// Demonstrate how we can create an XML document from scratch...
XMLHelper myXML = new XMLHelper();
myXML.LoadXML("
// Now create some children - Elements & Attributes...
XMLElement XMLChildFolder = myXML.CreateNodeElement(myXML.RootNode, "ChildFolder", "");
XMLAttribute XMLChildAttribute1 = myXML.CreateNodeAttribute(XMLChildFolder, "Price", "12.00");
XMLElement XMLChildElement = myXML.CreateNodeElement(XMLChildFolder, "ChildElementOfChildFolder", "Test element with a
XMLElement XMLSubChildFolder = myXML.CreateNodeElement(XMLChildFolder, "SubFolderOfChildFolder", "");
XMLElement XMLSubChildElement = myXML.CreateNodeElement(XMLSubChildFolder, "SubChildElement", "This is a sub element!");
XMLAttribute XMLChildAttribute2 = myXML.CreateNodeAttribute(XMLSubChildFolder, "Price", "10.00");
// Now save this XML document...
myXML.SaveToFile("myXMLTest.XML");
Console.WriteLine("End XML Create test - view myXMLTest.XML");
// Now demonstrate how we can load XML, modify it, and resave it!
Console.WriteLine("Begin XML Load/Modify/Save test...");
XMLHelper modifyXML = new XMLHelper();
modifyXML.LoadXML("myXMLTest.XML", XMLHelper.LoadType.FromLocalFile);
// Change something
ArrayList foundNodes = modifyXML.GetChildNodesFromCriteria("descendant::ChildFolder");
foreach (XMLNode theNode in foundNodes)
{
XMLNode nodeToModify = modifyXML.GetFirstChildXMLNode(theNode, "ChildElementOfChildFolder");
if (nodeToModify != null)
modifyXML.ModifyNodeElementValue(nodeToModify, "Modified value: " + DateTime.Now);
}
modifyXML.SaveToFile("myModifiedXMLTest.XML");
Console.WriteLine("End XML Load/Modify/Save test - see 'myModifiedXMLTest.XML' to see modification results to ChildElementOfChildFolder");
// Now show that we can load XML from a URL...
// Note: if behind a firewall this fail - comment out if necessary!
Console.WriteLine("Start XML Load/Save test from URL");
XMLHelper readFromURL = new XMLHelper();
string sTestURL = "http://www.birdwellmusic.com/bmpdata.XML";
readFromURL.LoadXML(sTestURL, XMLHelper.LoadType.FromURL);
readFromURL.SaveToFile("fromURL.XML");
Console.WriteLine("End XML Load/Save test from URL - see fromURL.XML");
return 0;
}
}
// A test class that contains some data, arrays, etc. The usual bits...
class MyTestObj
{
private string m_ID;
private string m_DateCreated;
private string m_DateModified;
private string m_Text;
private ArrayList m_URLS = new ArrayList();
public string ID
{
get {return m_ID; }
set {m_ID = value;}
}
public string DateCreated
{
get {return m_DateCreated; }
set {m_DateCreated = value; }
}
public string DateModified
{
get {return m_DateModified; }
set {m_DateModified = value; }
}
public string Text
{
get {return m_Text; }
set {m_Text = value;}
}
public void AddMyURL(MyURL MyURL)
{
m_URLS.Add(MyURL);
}
}
// Another test class - contains some members to store URL link info...
class MyURL
{
private string m_Label;
private string m_Link;
public string Label
{
get {return m_Label; }
set {m_Label = value;}
}
public string Link
{
get {return m_Link; }
set {m_Link = value;}
}
}
// A test "manager" class that wraps up our test classes and uses the XMLHelper
class MyManager
{
private XMLHelper m_XMLHelper;
private ArrayList m_MyTestObjArray = new ArrayList();
public MyManager()
{
m_XMLHelper = new XMLHelper();
}
public void AddMyTestObj(MyTestObj MyTestObj)
{
m_MyTestObjArray.Add(MyTestObj);
}
public bool Load()
{
if (m_XMLHelper.LoadXML("MyTestObj.XML", XMLHelper.LoadType.FromLocalFile) == false)
return false;
XMLNodeList objNodes = m_XMLHelper.GetChildNodesFromRoot("Obj");
foreach (XMLNode XMLNode in objNodes)
{
MyTestObj MyTestObj = new MyTestObj();
MyTestObj.ID = m_XMLHelper.GetAttributeValue(XMLNode, "ID");
MyTestObj.DateCreated = m_XMLHelper.GetAttributeValue(XMLNode, "DateCreated");
MyTestObj.DateModified = m_XMLHelper.GetAttributeValue(XMLNode, "DateModified");
MyTestObj.Text = m_XMLHelper.GetChildElementValue(XMLNode, "Text");
Console.WriteLine("DEBUG: ID={0}, DateCreated={1}, DateModified={2}, Text={3}", MyTestObj.ID, MyTestObj.DateCreated, MyTestObj.DateModified, MyTestObj.Text);
ArrayList urlNodes = m_XMLHelper.GetRecursiveChildNodesFromParent(XMLNode, "URL");
foreach (XMLNode urlNode in urlNodes)
{
MyURL MyURL = new MyURL();
MyURL.Label = m_XMLHelper.GetChildElementValue(urlNode, "Label");
MyURL.Link = m_XMLHelper.GetChildElementValue(urlNode, "Link");
MyTestObj.AddMyURL(MyURL);
Console.WriteLine("DEBUG: URL Link={0}", MyURL.Link);
}
AddMyTestObj(MyTestObj);
}
return true;
}
}
} // end TestXMLHelper namespace
/*************
MyTestObj.XML
http://www.birdwellmusic.com
http://www.google.com
www.google.com
www.hp.com
***********/

