Как я могу найти необходимую информацию в файле XML? - PullRequest
1 голос
/ 12 апреля 2020

Вам нужно найти все слова, где атрибут category = "ps" указывает, что это правильное имя (в данном случае обозначение "nprop") из XML -файла. Как мне это сделать? Спасибо! XML_file:

</tier>
      <tier id="ps" speaker="MiYA" category="ps" type="a" display-name="ps" >
         <event start="T0" end="T1">nprop</event>
         <event start="T1" end="T2">v</event>
         <event start="T2" end="T3">v</event>
 </tier>

Я пытался запрограммировать:

XmlTextReader reader = new XmlTextReader("C:\\Users\\Vera\\Desktop\\ВИКУСИК\\ПРОЕКТ\\извлечение имен\\извлечение имен\\bin\\Debug\\MiYA_196X_ILivedInMineevka_nar.exb");
            XElement root = XElement.Load(reader);
            XmlNameTable nameTable = reader.NameTable;
            XmlNamespaceManager nsmanager = new XmlNamespaceManager(nameTable);
            nsmanager.AddNamespace("ps", "nprop");
            IEnumerable<XElement> elements = root.XPathSelectElements("./tier", nsmanager);
                Console.WriteLine( elements);

Что не так?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Использование Xml Linq (XDocument)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            string[] words = doc.Descendants()
                .SelectMany(x => x.Attributes()
                    .Where(y => (string)y == "ps")
                    .Select(y => y.Name.LocalName))
                .Distinct()
                .OrderBy(x => x)
                .ToArray();
        }
    }
}
0 голосов
/ 12 апреля 2020

РЕДАКТИРОВАТЬ:

Чтобы получить начальный и конечный атрибуты элемента <tier id="ps" ...><event>nprop</event> или <tier category="ps" ...><event>nprop</event>:

XmlDocument meetingNotes = new XmlDocument();
meetingNotes.Load("C:\\Users\\Vera\\Desktop\\ВИКУСИК\\ПРОЕКТ\\извлечение имен\\извлечение имен\\bin\\Debug\\MiYA_196X_ILivedInMineevka_nar.exb");

XmlNodeList nPropEventElementsByCategory =
    meetingNotes.DocumentElement.SelectNodes("//tier[@category='ps']/event[text() = 'nprop']");

XmlNodeList nPropEventElementsById =
    meetingNotes.DocumentElement.SelectNodes("//tier[@id='ps']/event[text() = 'nprop']");

foreach (XmlElement nPropEventElementById in nPropEventElementsById)
{
    // Print out the start and end attributes
    Console.WriteLine("Start: {0}, End: {1}",
        nPropEventElementById.Attributes["start"].Value,
        nPropEventElementById.Attributes["end"].Value);
}
...