を変更することはありません私はZohoののCRM APIを呼び出してから、このXMLを得た:https://ix-infiniti-preview.azurewebsites.net/Manage/zohotest.xmlのXmlノード値は、エラー
私はこのXMLの各行をループしたかったし、各行でのDataTableの行データを作成します。
//Get List of fields
List<string> fields = data.Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToList();
List<MalformedLineException> exceptions = new List<MalformedLineException>();
List<string> values = new List<string>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlData);
// Count number of row returned
XmlNodeList xmlNL = xmlDoc.GetElementsByTagName("row");
int rowCount = xmlNL.Count;
for (int row = 1; row <= rowCount; row++)
{
DataRow currentRow = data.NewRow();
XmlNodeList xnList = xmlDoc.SelectNodes("/response/result/" + moduleName +"/row[@no='" + row + "']");
foreach (XmlNode xn in xnList)
{
foreach (string field in fields)
{
XmlNode objNode = xn.SelectSingleNode("//FL[@val='" + field + "']");
if (objNode != null)
{
string value = objNode.InnerText;
currentRow[field] = value;
}
}
}
data.Rows.Add(currentRow);
}
data.EndLoadData();
コードのこの作品は、行1のために正常に動作し、完全にDataColumsにすべての値をマップ:これは私が思い付いたものです。しかし、行2(実際のxmlの他の18行)では、これらの行の値はすべて行1とまったく同じになります。したがって基本的には、結果として1行20行が表示されます。ここで何が起こっているのかわからないので、これで私を助けてください。おかげ
フィールドは何に見えますか? yuurの "データ"の定義はどこですか? –
data.Rows.Add(currentRow)の代わりに試してみましたか? data.LoadDataRow(currentRow、true)を使用します。 ? –
なぜ 'xmlNL'ノードリストを使用せず、foreachを使ってそれらのノードをループさせますか? –