XML dosyasındaki geçersiz karakterleri kaldırmaya takılıyorum.XML'den geçersiz karakterleri kaldırma Dize C#
using (var cmd = new SqlCommand(Context.Command, connection))
{
cmd.CommandTimeout = Context.CommandTimeout;
using (var reader = cmd.ExecuteReader())
{
StringBuilder xmlResults = new StringBuilder(string.Empty);
while (reader.Read())
{
xmlResults.Append(reader.GetString(0));
}
if (!string.IsNullOrWhiteSpace(xmlResults.ToString()))
{
var doc = new XmlDocument();
XmlReader xmlReader = XmlReader.Create(new StringReader(xmlResults.ToString()));
doc.Load(xmlReader);
var nav = doc.CreateNavigator();
var objs = nav.Select("/index/type");
foreach (XPathNavigator obj in objs)
{
o.OnNext(obj);
}
}
}
}
Ben CleanInvalindXmlChars
kaydırma denedim
public static string CleanInvalidXmlChars(string text)
{
// From xml spec valid chars:
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
string re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
return Regex.Replace(text, re, "");
}
Ve burada SQL Server veri okuyan benim kod, (iyi bir pasajı): Ben kullanılamaz neler herşeyi şerit olmalıdır RegEx tarzı buldum
while (reader.Read())
{
xmlResults.Append(CleanInvalindXmlChars(reader.GetString(0)));
}
Ya
XmlReader xmlReader = XmlReader.Create(new StringReader(CleanInvalindXmlChars(xmlResults.ToString())));
yılında: çeşitli yerlerde
Okuduğum bir hücrede x0B simgesi var (Bunu SQL Server'da değiştirebilirim, ancak güvende olmak istiyorum).
Ancak, hep hata ile
System.Xml.XmlException kadar bitiriyorum: '', onaltılık değer 0x0B, geçersiz karakterdir. Hat 115, pozisyon 33407.
Bunu çözmeme yardım eden var mı?
x10FFFF'den önce ters eğik çizgi eksiksiniz. Ancak, bu sorunu çözeceğinden şüpheliyim. –
Bu "VT" sembolünü "input = Regex.Replace (input, @" [\ x0B] ", string.Empty) ile kaldırmayı denediniz mi? Ayrıca, bu geçersiz XML char regex'ine ihtiyacım olduğuna inanıyorum - '[\ u0000- \ u0008 \ u000B- \ u000C \ u000E- \ u0019] +' - bir dizeden tüm geçersiz XML karakterlerini eşleştirmek ve kaldırmak. –