Bulent Ozkir
Suppose I have following XML fragment:
<Authors>
<Author>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
</Author>
<Author>
<FirstName>Jane</FirstName>
<LastName>Eod</LastName>
</Author>
</Authors>
Now, how can I loop through my collection of authors and for each author retrieve its first and last name and put them in a variable strFirst and strLast?
- - - XMLApp.cs
using System;
using System.XML;
public class XMLApp
{
public void YourMethod( String strFirst, String strLast)
{
// Do something with strFirst and strLast.
// ...
Console.WriteLine( "{0}, {1}", strLast, strFirst);
}
public void ProcessXML( String XMLText)
{
XMLDocument _doc = new XMLDocument( );
_doc.LoadXML( XMLText);
// alternately, _doc.Load( _strFilename); to read from a file.
XMLNodeList _fnames = _doc.GetElementsByTagName( "FirstName" );
XMLNodeList _lnames = _doc.GetElementsByTagName( "LastName" );
// I'm assuming every FirstName has a LastName in this example, your requirements may vary. //
for ( int _i = 0; _i < _fnames.Count; ++_i )
{
YourMethod( _fnames[ _i].InnerText,
_lnames[ _i].InnerText );
}
public static void Main( String[] args)
{
XMLApp _app = new XMLApp( );
// Passing XML text as a String, you can also use the
// XMLDocument::Load( ) method to read the XML from a file.
//
_app.ProcessXML( @" <Authors>
<Author>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
</Author>
<Author>
<FirstName>Jane</FirstName>
<LastName>Eod</LastName>
</Author>
</Authors> " );
}
} // end XMLApp
- - - XMLApp.cs
Remember to /reference the System.XML.dll on the command-line to build XMLApp.cs:
csc.exe /r:System.XML.dll XMLApp.cs