繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> XML应用 >> TextXmlHelp

TextXmlHelp

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:13  文字大小:【】【】【
简介: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 modu...
关键字:TextXmlHelp

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("", XmlHelper.LoadType.FromString);

// 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 to test encoding");

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

This is a test

http://www.birdwellmusic.com

http://www.google.com

This is a second node!

www.google.com

www.hp.com

***********/

责任编辑:admin
相关文章