Ошибка при чтении *.xml документа - Знак "0", шестнадцатеричное значение 0x30, не может стоять в начале имени - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток ! При использовании следующей конструкции:
XDocument xd = XDocument.Load(filepath);
Или этой:
XmlDocument xd = new XmlDocument();
            xd.Load(filepath);
Выдает ошибку Знак "0", шестнадцатеричное значение 0x30, не может стоять в начале имени., строка 129, позиция 4. Вот отрывок из самого документа:
<SNGui ModuleName = "Пользовательский интерфейс">
        <CheckPassStat              value = "0"/>
        <CheckPassStatPacketCount   value = "0"/>
        <CheckPassStatAvgPacketSize value = "0"/>
        <CheckPassStatPacketsPerSec value = "0.000"/>
        <CheckPassStatBytesPerSec   value = "0.000"/>
        <00040002                   value = "MaxTime=9142 Count=1"/>
    </SNGui>
Что делать в этом случае ? Я конечно, понимаю, что в последней строчке имеется значени 00040002, и он ругается именно на него. Но как быть ? P.S. Структура .xml создаю не сам, так что работаю только с тем, что есть. Благодарен всем за оказанную помощь !

Решение задачи: «Ошибка при чтении *.xml документа - Знак "0", шестнадцатеричное значение 0x30, не может стоять в начале имени»

textual
Листинг программы
namespace Ghost
{
    using System;
    using System.Text.RegularExpressions;
    using System.Xml.Linq;
 
    class Program
    {
        static void Main(string[] args)
        {
            string xml = "<SNGui ModuleName = \"Пользовательский интерфейс\"> " + 
                            " <CheckPassStat              value = \"0\"/> " +
                            " <CheckPassStatPacketCount   value = \"0\"/> " +
                            " <CheckPassStatAvgPacketSize value = \"0\"/> " +
                            " <CheckPassStatPacketsPerSec value = \"0.000\"/> " +
                            " <CheckPassStatBytesPerSec   value = \"0.000\"/> " + 
                            " <00040002                   value = \"MaxTime=9142 Count=1\"/> " +
                        " </SNGui>";
 
            string pattern = @"[<](?<nodeName>\d{8})\s+(?=value)";
            Regex regex = new Regex(pattern);
            string replacement = "<_${nodeName} ";
            xml = regex.Replace(xml, replacement);
            XDocument.Parse(xml);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы