chowdary2005 Ответов: 1

Чтение XML-данных с помощью языка C#


Всем Привет,

У меня есть XML-файл в следующем формате. Который мне нужен, чтобы получить данные о первых, последних, id-значениях из имени узла. Можете ли вы помочь, как я могу получить это ?


<sectionIndex>
     <sectionRef first="A00" last="A09" id="A00-A09">
        Intestinal infectious diseases
     </sectionRef>
     <sectionRef first="A15" last="A19" id="A15-A19">
        Tuberculosis
     </sectionRef>
     <sectionRef first="A20" last="A28" id="A20-A28">
        Certain zoonotic bacterial diseases
     </sectionRef>
     <sectionRef first="A30" last="A49" id="A30-A49">
        Other bacterial diseases
     </sectionRef>
     <sectionRef first="A50" last="A64" id="A50-A64">
        Infections with a predominantly sexual mode of transmission
     </sectionRef>
     <sectionRef first="A65" last="A69" id="A65-A69">
        Other spirochetal diseases
     </sectionRef>
</sectionIndex>


Спасибо.

Что я уже пробовал:

Системы.В формате XML.XmlNodeList главы = док.Метод selectnodes("ICD10CM.табличные/глава");


Системы.В формате XML.XmlNodeList разделы = док.Метод selectnodes("ICD10CM.табличные/глава/sectionIndex");

(по каждому элементу системы.В формате XML.Руководство ГК в разделах)
{
string[] sections = новая строка[5];
sections[0] = CC. SelectSingleNode ("sectionRef").Через свойство innerText;
}

Bernhard Hiller

Разве для этого типа нет xsd? Тогда вы могли бы генерировать классы с помощью xsd.exe инструмент.

1 Ответов

Рейтинг:
1

OriginalGriff

Ход определения sections вне цикла и используйте индекс для доступа к нему. Или лучше использовать List<string> таким образом, вам не нужно работать с фиксированным количеством элементов:

System.Xml.XmlNodeList Chapters = doc.SelectNodes("ICD10CM.tabular/chapter");
System.Xml.XmlNodeList Sections = doc.SelectNodes("ICD10CM.tabular/chapter/sectionIndex");
List<string> sections = new List<string>();
foreach (System.Xml.XmlNode CC in Sections)
    {
    sections.Add(CC.SelectSingleNode("sectionRef").InnerText);
    }


chowdary2005

Привет, OriginalGriff, Спасибо за код.

При этом я получаю только значения Sectionindex. Но, мне нужен внутренний значений SectionRef, такие как "первый", "последний", "идентификатор" также.

OriginalGriff

Тогда вам нужно получить к ним доступ!
Внутри вашей петли:
XmlNode node = CC. SelectSingleNode ("sectionRef");
Затем вы можете получить доступ к этой информации следующим образом:
узел.Через свойство innerText
Что дает вам то, что вы получаете сейчас.

узел.Атрибуты ["первый"].Через свойство innerText
узел.Атрибуты ["последний"].Через свойство innerText
узел.Атрибуты ["id"].Через свойство innerText
Которые дают вам атрибуты.