я иметь следующую структуру Xml:XmlReader не читает файл, если он содержит само закрывающий тег
<event id="0" start_time="2014-05-21 10:00:00" duration="86340">
<short_event_descriptor lang="alb" name="Programet e Kanalit A1">Programe/Emisione</short_event_descriptor>
<extended_event_descriptor lang="alb">
<text>Programet dhe Emisionet e perditshme te kanalit A1</text>
</extended_event_descriptor>
</event>
<event id="1" start_time="2014-05-22 10:00:00" duration="86340">
<short_event_descriptor lang="alb" name="Programs of Channel A1">Programs/TalkShows</short_event_descriptor>
<extended_event_descriptor lang="alb">
<text />
</extended_event_descriptor>
</event>
и код Я пытаюсь сделать следующее:
try
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
if (reader.Name == "channel")
{
while (reader.MoveToNextAttribute())
{
if (reader.Name == "name")
{
// epg = new epg2();
epg.channelname = reader.Value;
epg.number = Convert.ToInt32(channelNames[i][1]);
xmlfile.Add(epg);
}
}
}
if (reader.Name == "event")
{
while (reader.MoveToNextAttribute())
{
if (reader.Name == "start_time")
{
// Ev = new Event();
Ev.starttime = Convert.ToDateTime(reader.Value);
}
else if (reader.Name == "duration")
{
Ev.duration = Convert.ToInt32(reader.Value);
}
else if (reader.Name == "name")
{
Ev.duration = Convert.ToInt32(reader.Value);
}
}
}
if (reader.Name == "short_event_descriptor")
{
while (reader.MoveToNextAttribute())
{
if (reader.Name == "name")
{
Ev.name = reader.Value;
}
}
}
break;
case XmlNodeType.Text: //Display the text in each element.
if (shenjuar > 0)
{
try
{
Ev.shortDescription = reader.Value.Replace("\r\n", "").Replace("\r", "").Replace("\n", "").Replace("Sub. Ang", "").Replace("Sub. Alb", "").Replace('\"', '\''); ;
}
catch
{
Ev.shortDescription = reader.Value;
}
shenjuar *= -1;
}
else if (shenjuar < 0)
{
try
{
Ev.longDescription = reader.Value.Replace("\r\n", "").Replace("\r", "").Replace("\n", "").Replace("Sub. Ang", "").Replace("Sub. Alb", "").Replace('\"', '\''); ;
}
catch
{
Ev.longDescription = reader.Value;
}
shenjuar *= -1;
epg.EventNumber.Add(Ev);
}
else reader.Skip();
break;
case XmlNodeType.EndElement: //Display the end of the element
reader.Skip();
break;
}
}
xmlfile.Add(epg);
}
catch (FileNotFoundException fnfe)
{
TextBox1.Text = "Error. Can not find " + CName + ".xml file";
//return;
}
catch (Exception exc)
{
TextBox1.Text = "Unknown Error: \r\nError on " + CName + ".xml file \r\n Error Description:" + exc.Message;
//return;
}
}
дело в том, что этот кусок кода используется для получения списка файлов XML, и проблема заключается в том, что для некоторых файлов тег самозакрывающиеся, и в этом случае читатель пропускает их от чтения в все. Поскольку XML-файлы приводятся в компанию как стандарт и каждый день меняют их содержимое, я не могу изменить их структуру. Я попытался использовать свойство IsEmptyElement, я пробовал разные способы чтения данных, но, несмотря ни на что, он всегда пропускает файлы с пустым тегом. это была неделя теперь, когда я пытаюсь каждый учебник я мог бы найти, но никакой обработки не работал
фрагмент кода, который вы видите, является «последней версией». перед этим я пробовал без свойства reader.Skip, и я проверил текстовый элемент, если он пуст, но это не сработало – Ange1