问问题
165 次
2 回答
0
或者,如果您无法控制 XML 的源并且只需要将所有值读入数据库或其他内容,则可以使用 XmlTextReader 逐行读取 xml,在您知道的元素上停止可能包含错误数据,并读取该元素的字符。我过去不得不这样做。像这样的东西
static void Main(string[] args)
{
var xtr = new XmlTextReader("");
xtr.Normalization = false;
while (xtr.Read())
{
if(xtr.IsStartElement("Row")) // My xml doc contains many row elements
{
var fields = new string[6];
while(xtr.Read())
{
for (int i = 0; i < 6; i++) // I know my xml only has six child elements per row
{
while(!xtr.IsStartElement())
{
xtr.Read(); // We're not interested in hitting the end elements
}
if(i == 1) // I know my special characters are in the second child element of my row
{
var charBuff = new char[255];
xtr.ReadChars(charBuff, 0, 255); // I know there will be a maximum of 255 characters
fields[i] = new string(charBuff);
}
else
{
fields[i] = xtr.ReadElementContentAsString();
}
}
}
}
}
}
于 2013-11-09T17:58:12.593 回答
0
您需要将这些字符替换为数字字符引用。类似于您如何将 > 和 < 替换为 & gt; 和 & lt;,你可以用 & #931; 之类的东西替换这些字符。或任何引用这些特定字符的内容。
编辑:我必须在 & 之后添加一个空格,以避免编辑器实际拾取和解释字符。只需删除正在使用的空间 - 你明白了。
于 2013-11-09T17:20:25.470 回答