我有一個要轉換為陣列的 XML 檔案。我嘗試使用 Xmlserialzer 類并且它正在作業,但由于某些原因,我不允許在我的專案中使用它。我看過幾個解決方案,但沒有一個符合我的要求。請指導我。下面是示例 XML 檔案。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PatientRecord>
<Patient>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<Age>46</Age>
</Patient>
<Patient>
<FirstName>Martha</FirstName>
<LastName>Stewart</LastName>
<Age>51</Age>
</Patient>
</PatientRecord>
陣列必須像:
{"Firstname", "LastName", "Age"}
{"John","Smith","46"}
{"Martha", "Stewart", "51"}
我試過的:
XmlReader xmlFile;
xmlFile = XmlReader.Create(inputPath, new XmlReaderSettings());
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml(xmlFile);
int row_count = ds.Tables[0].Rows.Count;
int col_count = ds.Tables[0].Columns.Count;
string[,] data = new string[row_count, col_count];
for(int i = 0; i < row_count; i )
{
for(int j = 0; j < row_count 1; j )
{
data[i, j] = ds.Tables[0].Rows[i][j].ToString();
data[i, j] = ds.Tables[0].Rows[i][j].ToString();
data[i, j] = ds.Tables[0].Rows[i][j].ToString();
}
}
我嘗試創建一個獲取值但不獲取標簽的二維陣列。
uj5u.com熱心網友回復:
我假設還有一個關閉元素Configuration,您的 xml 是有效的。
這是您可以DataTable用來獲得所需輸出的方法
收集有關列的資訊
DataTable dt = ds.Tables[1];
var columns = new List<string>();
foreach (DataColumn dc in dt.Columns)
{
if (dc.ColumnMapping == MappingType.Hidden) continue;
columns.Add(dc.ColumnName);
}
Tables[0]不包含太多有價值的資訊- 另一方面
Tables[1]確實
- 另一方面
- 該
if陳述句確保您跳過PatientRecord_Id動態生成的列 - 如果你真的需要作為一個陣列,
ToArray你可以呼叫。columns
收集行的資訊
var rows = new List<List<string>>();
foreach (DataRow dr in dt.Rows)
{
var row = new List<string>();
foreach (DataColumn dc in dt.Columns)
{
if (dc.ColumnMapping == MappingType.Hidden) continue;
row.Add(dr[dc].ToString());
}
rows.Add(row);
}
- 在這里你不能使用
dr.ItemArrayfor 內回圈- 這樣你就不能忽略生成的列的值
免責宣告:我已經使用List<string>并且List<List<string>>為了將我的帖子重點放在 DataTable API 的使用上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474960.html
上一篇:如何添加標簽?
