I have an XML file with two teamIds in it 1 and 3. But What I want to do is read all the players within the team node where the ID is 1 and stop if its 3. Below is my XML hope this is clear.
My code below is looping through all the player nodes in team, but I want it to stop if teamId isnt 1
class MatchedPlayers
{
public int PartnerSeriesID;
public int TeamID;
public void GetMatchInfo()
{
//Read XML to get the seriesID (Tournament ID)
XmlTextReader xmlSeries = new XmlTextReader("GetMatchPlayers-1.xml");
System.Xml.XmlDocument xmldocs = new System.Xml.XmlDocument();
xmldocs.Load("GetMatchPlayers-1.xml");
//Get Series ID
XmlNodeList xmlSeriesid = xmldocs.SelectNodes("//Header");
//Get TeamID for Players
XmlNodeList xmlTeamID = xmldocs.SelectNodes("//Teams/Team");
XmlNodeList xmlPlayers = xmldocs.SelectNodes("//Teams/Team/Player");
foreach (XmlNode series in xmlSeriesid)
{
xmldocs.LoadXml(series.OuterXml);
PartnerSeriesID = Convert.ToInt32(series.Attributes["seriesId"].Value);
Console.WriteLine(PartnerSeriesID);
}
//Foreach loop for TeamID
foreach (XmlNode teamID in xmlTeamID)
{
xmldocs.LoadXml(teamID.OuterXml);
TeamID = Convert.ToInt32(teamID.Attributes["teamId"].Value);
Console.WriteLine(TeamID);
//If TeamID is one get all the players in the team
if (TeamID == 1)
{
//ForEach for players goes here
}
}
}
}
}
luke_bryant
Member
396 Points
361 Posts
Read XML nodes
Apr 16, 2012 10:10 AM|LINK
Hi Programmers,
I have an XML file with two teamIds in it 1 and 3. But What I want to do is read all the players within the team node where the ID is 1 and stop if its 3. Below is my XML hope this is clear.
<Sportsflash xmlns=""> <Header clientId="0" localeId="en" seriesId="2643" matchId="1"> <Client>Sportsflash</Client> <Series>2011/12 Commonwealth Bank Series (AUS, IND, SLA)</Series> <Match>Match 1</Match> <LastUpdate>2012-03-23T23:29:26Z</LastUpdate> <LastGenerated>2012-03-23T23:29:26Z</LastGenerated> </Header> <Teams> <Team teamId="1" teamName="Australia" teamType="Home"> <Player playerId="3581" playerClass="Batsman"> <Name>Warner, DA</Name> <FirstName>David</FirstName> <LastName>Warner</LastName> </Player> <Player playerId="3588" playerClass="Wicket-Keeper"> <Name>Wade, MS (wk)</Name> <FirstName>Matthew</FirstName> <LastName>Wade</LastName> </Player> <Player playerId="276" playerClass="Batsman"> <Name>Ponting, RT</Name> <FirstName>Ricky</FirstName> <LastName>Ponting</LastName> </Player> <Player playerId="2812" playerClass="Batsman"> <Name>Clarke, MJ (c)</Name> <FirstName>Michael</FirstName> <LastName>Clarke</LastName> </Player> <Player playerId="2212" playerClass="Batsman"> <Name>Hussey, MEK</Name> <FirstName>Michael</FirstName> <LastName>Hussey</LastName> </Player> <Player playerId="2211" playerClass="Batsman"> <Name>Hussey, DJ</Name> <FirstName>David</FirstName> <LastName>Hussey</LastName> </Player> <Player playerId="3422" playerClass="All-Rounder"> <Name>Christian, DT</Name> <FirstName>Daniel</FirstName> <LastName>Christian</LastName> </Player> <Player playerId="2879" playerClass="Bowler"> <Name>Harris, RJ</Name> <FirstName>Ryan</FirstName> <LastName>Harris</LastName> </Player> <Player playerId="7438" playerClass="Bowler"> <Name>Starc, MA</Name> <FirstName>Mitchell</FirstName> <LastName>Starc</LastName> </Player> <Player playerId="3727" playerClass="Bowler"> <Name>McKay, CJ</Name> <FirstName>Clint</FirstName> <LastName>McKay</LastName> </Player> <Player playerId="2971" playerClass="Bowler"> <Name>Doherty, XJ</Name> <FirstName>Xavier</FirstName> <LastName>Doherty</LastName> </Player> <Player playerId="3576" playerClass="Batsman"> <Name>Forrest, PJ (12th)</Name> <FirstName>Peter</FirstName> <LastName>Forrest</LastName> </Player> </Team> <Team teamId="3" teamName="India" teamType="Away"> <Player playerId="3182" playerClass="Batsman"> <Name>Gambhir, G</Name> <FirstName>Gautam</FirstName> <LastName>Gambhir</LastName> </Player> <Player playerId="1133" playerClass="Batsman"> <Name>Tendulkar, SR</Name> <FirstName>Sachin</FirstName> <LastName>Tendulkar</LastName> </Player> <Player playerId="7285" playerClass="Batsman"> <Name>Kohli, V</Name> <FirstName>Virat</FirstName> <LastName>Kohli</LastName> </Player> <Player playerId="3529" playerClass="Batsman"> <Name>Sharma, RG</Name> <FirstName>Rohit</FirstName> <LastName>Sharma</LastName> </Player> <Player playerId="3379" playerClass="Batsman"> <Name>Raina, SK</Name> <FirstName>Suresh</FirstName> <LastName>Raina</LastName> </Player> <Player playerId="3354" playerClass="Wicket-Keeper"> <Name>Dhoni, MS</Name> <FirstName>MS</FirstName> <LastName>Dhoni</LastName> </Player> <Player playerId="3528" playerClass="All-Rounder"> <Name>Jadeja, RA</Name> <FirstName>Ravindra</FirstName> <LastName>Jadeja</LastName> </Player> <Player playerId="7292" playerClass="Bowler"> <Name>Ashwin, R</Name> <FirstName>Ravichandran</FirstName> <LastName>Ashwin</LastName> </Player> <Player playerId="8268" playerClass=""> <Name>Sharma, R</Name> <FirstName>Rahul</FirstName> <LastName>Sharma</LastName> </Player> <Player playerId="7287" playerClass="Bowler"> <Name>Vinay Kumar, R</Name> <FirstName>Ranganath</FirstName> <LastName>Vinay Kumar</LastName> </Player> <Player playerId="4677" playerClass="Bowler"> <Name>Kumar, PS</Name> <FirstName>Praveen</FirstName> <LastName>Kumar</LastName> </Player> <Player playerId="4592" playerClass="Batsman"> <Name>Tiwary, MK (12th)</Name> <FirstName>Manoj</FirstName> <LastName>Tiwary</LastName> </Player> </Team> </Teams> </Sportsflash>luke_bryant
Member
396 Points
361 Posts
Re: Read XML nodes
Apr 16, 2012 10:13 AM|LINK
My code below is looping through all the player nodes in team, but I want it to stop if teamId isnt 1
class MatchedPlayers { public int PartnerSeriesID; public int TeamID; public void GetMatchInfo() { //Read XML to get the seriesID (Tournament ID) XmlTextReader xmlSeries = new XmlTextReader("GetMatchPlayers-1.xml"); System.Xml.XmlDocument xmldocs = new System.Xml.XmlDocument(); xmldocs.Load("GetMatchPlayers-1.xml"); //Get Series ID XmlNodeList xmlSeriesid = xmldocs.SelectNodes("//Header"); //Get TeamID for Players XmlNodeList xmlTeamID = xmldocs.SelectNodes("//Teams/Team"); XmlNodeList xmlPlayers = xmldocs.SelectNodes("//Teams/Team/Player"); foreach (XmlNode series in xmlSeriesid) { xmldocs.LoadXml(series.OuterXml); PartnerSeriesID = Convert.ToInt32(series.Attributes["seriesId"].Value); Console.WriteLine(PartnerSeriesID); } //Foreach loop for TeamID foreach (XmlNode teamID in xmlTeamID) { xmldocs.LoadXml(teamID.OuterXml); TeamID = Convert.ToInt32(teamID.Attributes["teamId"].Value); Console.WriteLine(TeamID); //If TeamID is one get all the players in the team if (TeamID == 1) { //ForEach for players goes here } } } } }tusharrs
Contributor
3230 Points
668 Posts
Re: Read XML nodes
Apr 16, 2012 10:25 AM|LINK
Hi,
You can directly get then Team for which team id is 1 with this you can reduce the load
protected XmlDocument GetTeamXml()
{
XmlDocument doc = new XmlDocument();
try
{
doc.Load(Server.MapPath("~/XMLFILENAME.xml"));
}
catch (Exception ex)
{
}
return doc;
}
protected void LoadTeam(string TeamID)
{
try
{
XmlDocument doc = GetTeamXml();
if (doc.DocumentElement != null)
{
XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("//Teams/Team[@teamid='" + TeamID.Trim() + "']");
foreach (XmlNode node in nodes)
{
string teamName= node.Attributes["teamName"].Value;
}
}
}
catch (Exception ex)
{
}
}
( Mark as Answer if it helps you out )
View my Blog
rakeshreddym
Member
299 Points
79 Posts
Re: Read XML nodes
Apr 17, 2012 11:27 AM|LINK
Hi,
It is simple , If the condition satisfied (ID = '1') then exit the for each loop.
use "exit for " with in for each loop when the condition satisfied it will exits.