将数据从XML读取到二维数组中
本文关键字:二维数组 读取 XML 数据 | 更新日期: 2023-09-27 18:24:53
我有一个类似的xml文件。
<movielist>
<movie>
<title>ABC </title>
<year>2005</year>
<length>120 min</length>
<director>ABV</director>
<rating>1</rating>
<genre>AAA</genre>
<genre>BBB</genre>
<genre>CCC</genre>
<actor>John</actor>
<actor>TOM</actor>
</movie>
<movie>
<title>cba</title>
<year>2015</year>
<length>220min</length>
<director>ABV</director>
<rating>1</rating>
<genre>AAA</genre>
<genre>BBB</genre>
<genre>CCC</genre>
<actor>John</actor>
<actor>TOM</actor>
</movie>
<movielist>
我想为每部电影存储在2D阵列中类似:
data[0][0] = "ABC "
data[0][1] = "2005"
...
and so on
next movie.
data[1][0] = "cba"
data[1][1] = "2015"
...
我该怎么做?我试着走这条路。
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "title")
{
reader.Read();
data[i, 0] = reader.Value;
}
一个将XML
文件加载到DataTable
的方法,只需传递。xml
文件到它的
public static DataTable LoadDataTableFromXML(string Path)
{
XmlDocument doc = new XmlDocument(); /* using System.Xml */
doc.Load(Path);
DataSet dataSet = new DataSet();
dataSet.ReadXml(new StringReader(doc.InnerXml));
return dataSet.Tables[0];
}
现在,从该方法返回的DataTable
具有来自.xml
文件的数据
DataTable dtMovieDetails = LoadDataTableFromXML(Server.MapPath("xml file path"));
string[,] data = new string[dtMovieDetails.Rows.Count,dtMovieDetails.Columns.Count]; /*dtMovieDetails.Rows.Count represents number of Rows and dtMovieDetails.Columns.Count represents number of Columns in your xml file*/
int row = 0; /* row counter */
foreach (DataRow dataRow in dtMovieDetails.Rows)
{
for(int col = 0; col < dataRow.ItemArray.Count(); col++) /*col is columns counter */
{
data[row, col] = dataRow[col].ToString();
}
row++;
}
XmlReader xmlFile;
xmlFile = XmlReader.Create("XMLPATH should be here", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
int row_count = ds.Tables[0].Rows.Count;
int coloumn_count = ds.Tables[0].Columns.Count;
string[,] data = new string[row_count,coloumn_count ];
for (int i = 0; i < row_count; i++)
{
data[i, 0] = ds.Tables[0].Rows[i][0].ToString();
data[i, 1] = ds.Tables[0].Rows[i][1].ToString();
data[i, 2] = ds.Tables[0].Rows[i][2].ToString();
data[i, 3] = ds.Tables[0].Rows[i][3].ToString();
data[i, 4] = ds.Tables[0].Rows[i][4].ToString();
data[i, 5] = ds.Tables[0].Rows[i][5].ToString();
data[i, 6] = ds.Tables[0].Rows[i][6].ToString();
data[i, 7] = ds.Tables[0].Rows[i][7].ToString();
data[i, 8] = ds.Tables[0].Rows[i][8].ToString();
data[i, 9] = ds.Tables[0].Rows[i][9].ToString();
}