專案根目錄下 YearOfBirth.xml,結構清晰,適合示範 DataSet.ReadXml() 載入。
<?xml version="1.0" encoding="utf-8"?>
<YearOfBirths>
<YearOfBirth><ID>1</ID><Name>鼠</Name></YearOfBirth>
<YearOfBirth><ID>2</ID><Name>牛</Name></YearOfBirth>
<YearOfBirth><ID>3</ID><Name>虎</Name></YearOfBirth>
<YearOfBirth><ID>4</ID><Name>兔</Name></YearOfBirth>
<YearOfBirth><ID>5</ID><Name>龍</Name></YearOfBirth>
<YearOfBirth><ID>6</ID><Name>蛇</Name></YearOfBirth>
<YearOfBirth><ID>7</ID><Name>馬</Name></YearOfBirth>
<YearOfBirth><ID>8</ID><Name>羊</Name></YearOfBirth>
<YearOfBirth><ID>9</ID><Name>猴</Name></YearOfBirth>
<YearOfBirth><ID>10</ID><Name>雞</Name></YearOfBirth>
<YearOfBirth><ID>11</ID><Name>狗</Name></YearOfBirth>
<YearOfBirth><ID>12</ID><Name>豬</Name></YearOfBirth>
</YearOfBirths>
private string XmlFilePath
{
get { return Server.MapPath("~/YearOfBirth.xml"); }
}
<asp:RadioButtonList ID="RadioButtonListYearOfBirth" runat="server"
RepeatColumns="6" RepeatDirection="Horizontal">
</asp:RadioButtonList>
private void Data_Binding()
{
using (DataSet ds = new DataSet())
{
ds.ReadXml(XmlFilePath);
RadioButtonListYearOfBirth.DataSource = ds;
RadioButtonListYearOfBirth.DataTextField = "Name";
RadioButtonListYearOfBirth.DataValueField = "ID";
RadioButtonListYearOfBirth.DataBind();
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) Data_Binding();
}
| 技術點 | 說明 |
|---|---|
| DataSet.ReadXml() | 自動推斷 XML 結構建立 DataTable,欄位對應 XML 元素名稱 |
| DataTextField | 顯示文字欄位,對應 XML 的 <Name> 元素 |
| DataValueField | 實際值欄位,對應 XML 的 <ID> 元素 |
| RepeatColumns | 水平顯示欄數,此例 6 欄適合 12 生肖 |
| RepeatDirection | Horizontal:水平排列;Vertical:垂直排列 |
ds.ReadXml(new StringReader(xmlString))HttpRuntime.Cache 快取 DataSet,避免重複讀檔try-catch 捕捉 FileNotFoundException、XmlExceptionXDocument + LINQ to XML:型別安全、查詢彈性高、適合複雜 XMLXmlDocument:舊版 DOM API,效能較差,維護舊代碼時使用DataSet.ReadXml:最簡潔、直接支援資料綁定、適合簡單平坦結構