XML - get data

  • Thread starter Thread starter Mark
  • Start date Start date
M

Mark

I've pasted a shortened XML file I have below. The path to the file is
strored in a string titled "myFile".

What would be the syntax for getting the crse_no and prog_type columns where
the sect_key = 176902?

Thanks in advance.
Mark

************ XML FILE BELOW **********

<?xml version="1.0" standalone="yes"?>
<CourseData>
<blah>
<cluster_cd>WB01</cluster_cd>
<sect_key>176901</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0017 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>A</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176902</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0018 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>B</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176903</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0019 </crse_no>
<crse_sec_no>002</crse_sec_no>
<prog_type>C</prog_type>
</blah>
</CourseData>
 
[STAThread]
static void Main(string[] args)
{
XmlDocument xd = new XmlDocument();
string file = @"C:\myfile.xml";
xd.Load(file);
XmlTextReader r = new XmlTextReader(file);

string strSectKey="176902";

while (r.Read())
{
if (r.NodeType == XmlNodeType.Element)
{
if ( r["sect_key"] == strSectKey)
{
Console.WriteLine(r["prog_type"] + ", " + r["crse_no"] + ", " +
r["sect_key"]);
}
}
}

Console.Read();
}
 
you could also have used an XPath query

--- Nick

Mark said:
[STAThread]
static void Main(string[] args)
{
XmlDocument xd = new XmlDocument();
string file = @"C:\myfile.xml";
xd.Load(file);
XmlTextReader r = new XmlTextReader(file);

string strSectKey="176902";

while (r.Read())
{
if (r.NodeType == XmlNodeType.Element)
{
if ( r["sect_key"] == strSectKey)
{
Console.WriteLine(r["prog_type"] + ", " + r["crse_no"] + ", " +
r["sect_key"]);
}
}
}

Console.Read();
}



Mark said:
I've pasted a shortened XML file I have below. The path to the file is
strored in a string titled "myFile".

What would be the syntax for getting the crse_no and prog_type columns where
the sect_key = 176902?

Thanks in advance.
Mark

************ XML FILE BELOW **********

<?xml version="1.0" standalone="yes"?>
<CourseData>
<blah>
<cluster_cd>WB01</cluster_cd>
<sect_key>176901</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0017 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>A</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176902</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0018 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>B</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176903</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0019 </crse_no>
<crse_sec_no>002</crse_sec_no>
<prog_type>C</prog_type>
</blah>
</CourseData>
 
Mark,

You can do it like this:

string myKey = "176902";
XmlNode node1 = doc.SelectSingleNode(String.Format
("descendant::blah[@sect_key='{0}']", myKey));

Try to learn XPath as Nick suggested.
 
Thanks for kicking in with an actual bit of code, Chris. That makes the
answer much more complete.

--- Nick

Chris Ongsuco said:
Mark,

You can do it like this:

string myKey = "176902";
XmlNode node1 = doc.SelectSingleNode(String.Format
("descendant::blah[@sect_key='{0}']", myKey));

Try to learn XPath as Nick suggested.


-----Original Message-----
I've pasted a shortened XML file I have below. The path to the file is
strored in a string titled "myFile".

What would be the syntax for getting the crse_no and prog_type columns where
the sect_key = 176902?

Thanks in advance.
Mark

************ XML FILE BELOW **********

<?xml version="1.0" standalone="yes"?>
<CourseData>
<blah>
<cluster_cd>WB01</cluster_cd>
<sect_key>176901</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0017 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>A</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176902</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0018 </crse_no>
<crse_sec_no>001</crse_sec_no>
<prog_type>B</prog_type>
</blah>
<blah>
<cluster_cd>WB02</cluster_cd>
<sect_key>176903</sect_key>
<crse_desn>CLC </crse_desn>
<crse_no>0019 </crse_no>
<crse_sec_no>002</crse_sec_no>
<prog_type>C</prog_type>
</blah>
</CourseData>


.
 
Back
Top