Я должен создать XML после чтения из таблицы данных в приложении C #. Эта логика работает нормально, за исключением «’ »и« & ». Когда эти специальные символы встречаются, произошла ошибка в сгенерированном xml. Ошибка «Отсутствует необходимый пробел»
Какие изменения необходимо внести в следующий код, чтобы он работал для указанных выше специальных символов?
Framework : .Net 3.0
Примечание. Приведенный ниже код объясняет, какие все символы являются допустимыми, а какие недействительными (специальные символы).
Примечание: таблица данных читается из файла CSV, который выглядит как
ZipCode,City,State,County
92357,VETRANS' HOSPITAL,CA,SAN BERDINO
36675,MOBLE P&DC,AL,MOBLE
Код следующий ....
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