2010-11-03 2 views
0

Привет, ребята Я хотел бы проанализировать следующую строку xml в C# Я попытался прочесть всю строку в наборе данных, а затем использовать ее .. в наборе данных просто нет таблиц.xml синтаксический анализ в C#

вот xml, который мне интересен для синтаксического анализа.

код XML здесь http://pastebin.com/VfT2wAwY

C# код здесь http://pastebin.com/iwqDK2S6


Спасибо и уважением, Gagan ДЖАНЖУА

+4

Что набора данных? Можете ли вы разместить свой код? И если вы собираетесь вставить XML в свой вопрос, вставьте его как текст, а не как изображение. –

+0

Я пробовал вставлять это как текст, но не мог этого сделать ... я знаю, что я глуп ... !! :( – Gagan

+0

Если вы хотите вставить его в текст, вы должны заменить символ <<, иначе он думает, что вы публикуете html. –

ответ

0

Вы можете изменить код Скотта, чтобы сделать его работу, изменив следующую строку кода:

// I can now access each case specifically 
    var allEvents = currentCase.Descendants("events"); 

Сделать это:

// I can now access each case specifically 
    var allEvents = currentCase.Descendants("event"); 

При том, что у вас есть доступ к каждому элементу события. И оттуда вы можете определенно получить доступ к элементу ixBugEvent.

Надеюсь, это поможет.

P.s .: К сожалению, чтобы сделать это еще один ответ, но я хотел бы выделить код, и это, кажется, единственный способ сделать это ...

+1

было так много весело сегодня ... грипп ушел, и код работает .. спасибо Вагнер. Отмечено это как ответ .. Спасибо Скотту ... – Gagan

2

Вы знаете о XmlReader от System.Xml?

В XML не существует схемы, поэтому вы не можете ожидать, что вы сможете использовать ее для заполнения DataSet ... Если вы не определили свою собственную схему, то есть.

+1

Вам не нужно иметь схему, DataSet может ее автоматически создать. set.ReadXml (reader, XmlReadMode.Auto) <- reader - StringReader содержит xml в виде строки. –

+0

@Dmitry ... вот почему я использовал dataset.i не нужно беспокоиться о схеме в этом случае ... но когда я пытаюсь использовать путь к набору данных, я получаю базу данных, которая равна nulll ..... – Gagan

+0

Что значит база данных была нулевой? Был ли набор данных нулевым или вы не получили никаких данных? Не могли бы вы предоставить нам xml и код? –

5

Считаете ли вы, что LINQ to XML? Если вы используете .NET Framework 3.5 или новее, то LINQ может сэкономить вам много времени.

Я не проверял это, но вы могли бы сделать что-то вроде:

XDocument doc = XDocument.Load(@"C:\mydocument.xml"); 

var allCases = doc.Element("response").Element("cases").Descendants("case"); 

foreach (var currentCase in allCases) { 
    // I can now access each case specifically 
    var allEvents = currentCase.Descendants("events"); 

    foreach (var currentEvent in allEvents) { 
     // now I can access each event 
     int ixBugEvent = (int)currentEvent.Element("ixBugEvent"); 
     // etc... 
    } 
} 
+0

Если это сработает, это было бы потрясающе ... однако я буду проверять его, как только я доберусь до дома, чтобы я мог удаленно ...: | – Gagan

+0

Нео это не работает .. дает мне это сообщение «System.ArgumentNullException было необработанное сообщения = Значение не может быть пустым имя параметров:.. Элемент Источника = System.Xml.Linq ParamName = элемент – Gagan

2

Вашего кода возвращает нуль из-за ваш улов делает его недействительным. Он попадает в улов, со следующей ошибкой:

Column name 'ixBugEvent' is defined for different mapping types. 

У меня создалось впечатление, что причиной этого является то, что у вас есть ixBugEvent и как атрибут и элемент

<event ixBugEvent='3' ixBug='2'> 
      <ixBugEvent>3</ixBugEvent> 

Удаление одного из них исправить проблема. Код работает, но ваша XML-схема не может быть переведена в набор данных.

+0

nopes я не могу изменить xml, потому что, я получаю его обратно из fogbugz api .... – Gagan

+0

wll дать этому коду попробовать, прежде чем этот вирус упадет мне. Спасибо за помощь ур, ребята ... всякая предполагаемая помощь была оценена – Gagan

Смежные вопросы