Чтение определенных данных из файла XML - PullRequest
0 голосов
/ 29 июля 2010

Я знаком с написанием и чтением своих собственных файлов XML, например, для настройки, но мне нужно прочитать данные из огромного файла XML, но я не могу найти свою отправную точку.

<span class="mw-headline" id="Kader_der_Saison_2010.2F11.5B51.5D">
  Kader der Saison 2010/11 
  <sup id="cite_ref-50" class="reference">
      <a href="#cite_note-50">[51]</a> 
  </sup>
</span>
</h3>
<table class="wikitable" width="550px">
   <tr bgcolor="#DDDDDD">
      <th>Name</th> 
      <th>Trikot</th> 
      <th>Nationalität</th> 
   </tr>
   <tr bgcolor="#EEEEEE">
      <th colspan="3" align="left">Torwart</th> 
   </tr>
   <tr bgcolor="#FFFFFF">
     <td>
         <a href="/wiki/Manuel_Almunia" title="Manuel Almunia">Manuel Almunia</a> 
     </td>
     <td align="center">1</td> 
     <td align="center">
        <span style="display:none" class="sortkey">Spanien !</span> 
        <a href="/wiki/Datei:Flag_of_Spain.svg" class="image" title="Spanier">
           <img alt="Spanier" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Spain.svg/20px-Flag_of_Spain.svg.png" width="20" height="13" class="thumbborder" /> 
        </a>
     </td>
  </tr>
- <tr bgcolor="#FFFFFF">
- <td>
  <a href="/wiki/%C5%81ukasz_Fabia%C5%84ski" title="Łukasz Fabiański">Łukasz Fabiański</a> 
  </td>
  <td align="center">21</td> 
- <td align="center">
  <span style="display:none" class="sortkey">Polen !</span> 
- <a href="/wiki/Datei:Flag_of_Poland.svg" class="image" title="Pole">
  <img alt="Pole" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flag_of_Poland.svg/20px-Flag_of_Poland.svg.png" width="20" height="13" class="thumbborder" /> 
  </a>
  </td>
  </tr>

КакВы (возможно) можете видеть, что я пытаюсь прочитать имена всех членов команды, начинающихся рядом с "Kader_der_Saison" прямо из Википедии.Мне нужны название или текст этих элементов

<a href="/wiki/Manuel_Almunia" title="Manuel Almunia">Manuel Almunia</a>

, чтобы получить имена Мануэль Альмуния, Лукаш Фабянски и т. Д.

Я пробовал несколько способов, xmldocument.GetElementById или Имя, XmlReader.NoteTyp, XmlReader.MoveToNextAttribute, xmldocument.SelectNode(xpath), даже пытался выполнить запрос linq к документу, но я не дошел до позиции имен.

Любые идеи о том, какнайдите позицию "Kader_der_Saison" и прочитайте следующий <a текст ссылки?

Спасибо

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Это похоже на HTML, а не XML. Предполагая, что это правильно, см. этот вопрос .

Если это действительно Xml (и кто-то выбрал действительно неправильные имена тегов), загрузите его как XmlDocument или XPathDocument и используйте навигацию XPath для вызова узлов по имени.

Я редко использую XPathDocuments, но с XmlDocument ваш код может выглядеть примерно так:

XmlDocument xDoc = new XmlDocument();
xDoc.Load(yourXml)
var nodes = xDoc.SelectNodes(nodeName);
0 голосов
/ 29 июля 2010

C # имеет действительно классный класс с именем XmlSerializer , который по сути превращает XML в объект. С действительно глубокими XML-файлами могут быть проблемы, потому что вам нужно создать объект для каждого узла, но я думаю, что это лучшее, что есть нарезанный хлеб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...