日期:2008-07-13  浏览次数:20369 次

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