you can bind a XmlNodeList to a repeater .... XmlNodeList nodes=doc.SelectNodes("//employees[position()<6]");Repeater1.DataSource = nodes; Repeater1.DataBind(); see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspn-hierdatabinding.asp
DataView dv=dataSet.Tables[0].DefaultView;
dv.Rowfilter="id<6";
Repeater.DataSource=dv;
Repeater.DataBind();
doc.Load(@"e:\employees.xml");
//选择前5个employees节点
XmlNodeList nodes=doc.SelectNodes("//employees[position()<6]");
foreach(XmlNode node in nodes)
Console.WriteLine(node.ChildNodes[0].InnerText);
-------------------------------------
测试XML文件:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<employees>
<EmployeeID>1</EmployeeID>
<LastName>Davolio</LastName>
<FirstName>Nancy</FirstName>
<Title>Sales Representative</Title>
</employees>
<employees>
<EmployeeID>2</EmployeeID>
<LastName>Fuller</LastName>
<FirstName>Andrew</FirstName>
<Title>Vice President, Sales</Title>
</employees>
<employees>
<EmployeeID>3</EmployeeID>
<LastName>Leverling</LastName>
<FirstName>Janet</FirstName>
<Title>Sales Representative</Title>
</employees>
<employees>
<EmployeeID>4</EmployeeID>
<LastName>Peacock</LastName>
<FirstName>Margaret</FirstName>
<Title>Sales Representative</Title>
</employees>
<employees>
<EmployeeID>5</EmployeeID>
<LastName>Buchanan</LastName>
<FirstName>Steven</FirstName>
<Title>Sales Manager</Title>
</employees>
<employees>
<EmployeeID>6</EmployeeID>
<LastName>Suyama</LastName>
<FirstName>Michael</FirstName>
<Title>Sales Representative</Title>
</employees>
<employees>
<EmployeeID>7</EmployeeID>
<LastName>King</LastName>
<FirstName>Robert</FirstName>
<Title>Sales Representative</Title>
</employees>
<employees>
<EmployeeID>8</EmployeeID>
<LastName>Callahan</LastName>
<FirstName>Laura</FirstName>
<Title>Inside Sales Coordinator</Title>
</employees>
<employees>
<EmployeeID>9</EmployeeID>
<LastName>Dodsworth</LastName>
<FirstName>Anne</FirstName>
<Title>Sales Representative</Title>
</employees>
</NewDataSet>
------------------
显示结果:
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<list>
<theme>
<click>1</click>
<title>街球族将技术玩成艺术</title>
<ID>6001</ID>
<sort>0</sort>
<date>
</date>
<datetime>2004-10-27</datetime>
<pic>0</pic>
<btype>StreetBall</btype>
<ctype>街舞风雷</ctype>
</theme>
<theme>
<click>2</click>
<title>街头篮球术语</title>
<ID>6002</ID>
<sort>0</sort>
<date>
</date>
<datetime>2004-10-27</datetime>
<pic>0</pic>
<btype>StreetBall</btype>
<ctype>街舞风雷</ctype>
</theme>
<theme>
<click>1</click>
<title>街头球魂street basketball</title>
<ID>6003</ID>
<sort>0</sort>
<date>
</date>
<datetime>2004-10-27</datetime>
<pic>0</pic>
<btype>StreetBall</btype>
<ctype>街舞风雷</ctype>
</theme>
<theme>
<click>1</click>
<title>街头篮球——舞风弄雷</title>
<ID>6004</ID>
<sort>0</sort>
<date>
</date>
<datetime>2004-10-27</datetime>
<pic>0</pic>
<btype>StreetBall</btype>
<ctype>街舞风雷</ctype>
</theme>
<theme>
<click>2</click>
<title>街头篮球的发展</title>
<ID>6005</ID>
<sort>0</sort>
<date>
</date>
<datetime>2004-10-27</datetime>
<pic>0</pic>
<btype>StreetBall</btype>
<ctype>街舞风雷</ctype>
</theme>
</list>
我想显示成的是,一个TR里,分3个TD;
第一个TD显示的是前5条的TITLE节点的值;第2个是显示DATETIME;第3个是显示CLICK
....
XmlNodeList nodes=doc.SelectNodes("//employees[position()<6]");Repeater1.DataSource = nodes;
Repeater1.DataBind();
see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspn-hierdatabinding.asp
9
8
7
6
5
那应该怎么写呢?而且不能写一个定值啊,毕竟会随时增加记录的啊!
doc.Load(@"e:\employees.xml");
XmlNodeList nodes=doc.SelectNodes("//employees[position()>(last()-5)]");
foreach(XmlNode node in nodes)
Console.WriteLine(node.ChildNodes[0].InnerText);-------------
显示结果:
5
6
7
8
9
----------------
如果想要显示
9
8
7
6
5更改一下foreach(XmlNode node in nodes)的循环方式。for(int i=nodes,Count-1;i>=0;i--)
Console.WriteLine(nodes[i].ChildNodes[0].InnerText);
void Page_Load(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("admin/data/Personnel.xml"));
//选择前5个employees节点
XmlNodeList nodes = doc.SelectNodes("//theme[position()<6]"); Table tb=new Table();
TableRow tr=new TableRow();
TableCell tc = new TableCell();
foreach (XmlNode node in nodes)
tc.Controls.Add(node.ChildNodes[0].InnerText);
}这么写怎么不行啊?
Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.UI.ControlCollection.Add(System.Web.UI.Control)' has some invalid arguments
Controls.Add方法是添加控件,而node.ChildNodes[0].InnerText只是字符串,
和add方法的参数不匹配!!!
<tr><td>显示9</td></tr>
<tr><td>显示8</td></tr>
<tr><td>显示7</td></tr>
<tr><td>显示6</td></tr>
<tr><td>显示5</td></tr>