C#アプリケーションでデータテーブルから読み込んだ後にxmlを作成する必要があります。このロジックは "'"と "&"を除いて正常に動作しています。これらの特殊文字に遭遇すると、生成されたxmlにエラーが発生しました。エラーは「必要な空白がありませんでした」DataTableからのXML作成エラー
上記の特殊文字のために次のコードを変更するにはどうすればよいですか?
フレームワーク:.NET 3.0
注:下記のコードは、すべての有効な文字であり、無効(特殊文字)何であるかを説明しています。
注:データテーブルは
ZipCode,City,State,County
92357,VETRANS' HOSPITAL,CA,SAN BERDINO
36675,MOBLE P&DC,AL,MOBLE
コードがfolllowsのように見えるcsvファイルから読み込まれます....
StringBuilder xmlForCSV = new StringBuilder();
xmlForCSV.Append("<root>");
foreach (DataRow excelRow in dtCSVExcelSource.Rows)
{
string zipCode = RemoveSpecialCharacters(excelRow["ZipCode"].ToString());
string city = RemoveSpecialCharacters(excelRow["City"].ToString());
string state = RemoveSpecialCharacters(excelRow["State"].ToString());
string county = RemoveSpecialCharacters(excelRow["County"].ToString());
xmlForCSV.Append("<row ZipCode='" + zipCode +
"' City='" + city +
"' State='" + state +
"' County='" + county + "'/>");
}
xmlForCSV.Append("</root>");
機能が
private string RemoveSpecialCharacters(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'z' || (str[i] == '.' || str[i] == '_' || str[i] == '-' || str[i] == ' ' || str[i] == '(' || str[i] == ')' || str[i] == '/' || str[i] == '\\' || str[i] == '\'' || str[i] == '#')))
{
sb.Append(str[i]);
}
else
{
if (str[i] == '&')
{
string ampersand = System.Convert.ToString(str[i]);
}
else
{
string specialCharacter = System.Convert.ToString(str[i]);
}
}
}
return sb.ToString();
}
おかげ
ですLijo
サンプルのdatatable/excelを得ましたか? – naveen
xmlが生成されたサンプルcsvファイルの内容で投稿を更新しました。 – Lijo
コードが正常に表示されます。その特定のエラーについてGoogleであなたに教えましたか? – Muse