При сериализации объекта символы <
и >
выводятся не так (последняя строка файла)
xml:
<?xml version="1.0"?>
<ArrayOfUser_Ser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<User_Ser>
<Login>Tat@nk@</Login>
<Password>Tanya123</Password>
<Name>Татьяна</Name>
<Sername>Шебаниц</Sername>
<Address>
<Country>Украина</Country>
<Region>Донецкая</Region>
<City>Мариуполь</City>
<Street>Пашковского</Street>
<House_number>41</House_number>
<Room>8</Room>
</Address>
<Phone>0962234923</Phone>
</User_Ser>
<User_Ser>
<Login>MACTEPwar</Login>
<Password>Accessdeniedroma2005</Password>
<Name>Виталий</Name>
<Sername>Шебаниц</Sername>
<Address>
<Country>Украина</Country>
<Region>Донецкая</Region>
<City>Мариуполь</City>
<Street>Пашковского</Street>
<House_number>41</House_number>
<Room>8</Room>
</Address>
<Phone>0678838348</Phone>
</User_Ser><User_Ser><Login>SePoGa</Login><Password>Ser123</Password><Name>Сергей</Name><Sername>Шебаниц</Sername><Address><Country>Украина</Country><Region>Донецкая</Region><City>Мариуполь</City><Street>Пашковского</Street><House_number>41</House_number><Room>8</Room></Address><Phone>0962234924</Phone></User_Ser><User_Ser><Login>SePoGa</Login><Password>Ser123</Password><Name>Сергей</Name><Sername>Шебаниц</Sername><Address><Country>Украина</Country><Region>Донецкая</Region><City>Мариуполь</City><Street>Пашковского</Street><House_number>41</House_number><Room>8</Room></Address><Phone>0962234924</Phone></User_Ser></ArrayOfUser_Ser>
Сериализация:
public static void setUsers(List<User_Ser> users)
{
XmlDocument doc = new XmlDocument();
doc.Load(pathToFile);
foreach (User_Ser user in users)
{
XmlNode xnode = doc.CreateNode(XmlNodeType.Element, "User_Ser", null);
XmlSerializer xSeriz = new XmlSerializer(typeof(User_Ser));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings writtersetting = new XmlWriterSettings();
writtersetting.OmitXmlDeclaration = true;
StringWriter sw = new StringWriter();
using (XmlWriter xmlwriter = System.Xml.XmlWriter.Create(sw, writtersetting))
{
xSeriz.Serialize(xmlwriter, user, ns);
}
byte[] symbol = Encoding.GetEncoding(1251).GetBytes(sw.ToString()); //Получаем байт символа "Я" в кодировке 1251
Console.WriteLine(symbol[0]); // посмотрев таблицу символов кодировки 1251 в википедии было установлено что символу я соответствует значение "DF" в 16 в шестнадцатеричной системе счисления = 223 в десятичной
string binary = Convert.ToString(symbol[0], 2); //перевели байт в двоичную систему и получили "11011111" = 223 = DF
// Console.WriteLine(binary);
symbol[0] = Convert.ToByte(binary, 2); //перевели обратно в десятичную и получили опять 223 = DF
string r = Encoding.GetEncoding(1251).GetString(symbol); //Преобразовали обратно в строку
xnode.InnerText = r;
XmlNode bindxnode = xnode.SelectSingleNode("User_Ser");
foreach (XmlNode ch in xnode)
{
doc.DocumentElement.AppendChild(ch);
}
}
doc.Save(pathToFile);
}
Как вывести их в нормальном виде?
"не так" - не как?
Это нормальное кодирование для служебных xml-символов, встречающихся в innerText
и значениях атрибутов xml-элементов.
xnode.InnerText = r;
Подозреваю, что Вы хотели назначить InnerXml
- https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmlnode.innerxml?view=netframework-4.7.2
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли вращать из своего приложения , другие запущенные приложения в Windows ?
Требуется с помощью рекурсии определить можно ли из массива 1N, в котором лежать целые неотрицательные числа, получить сумму K
Создаю 5 полей upload для загрузки multiple файлов на сервер