2015-09-20 3 views
-3

Здравствуйте, я создал файл xml с мотивационными цитатами, и я хочу прочитать эти цитаты в массиве.Я хочу создать массив, содержащий мои узлы xmldocument в C#

Вот что мой файл XML выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<MotivationalQuotes> 
    <quotation> 
    <quote>Life is about making an impact, not making an income</quote> 
    <author>Kevin Kruse</author> 
    </quotation> 

    <quotation> 
    <quote>Whatever the mind of man can conceive and believe, it can achieve</quote> 
    <author>Napoleon Hill</author> 

    </quotation> 

</MotivationalQuotes> 

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

1) Как я могу изменить этот код для создания массива строк, где каждый элемент в массиве является цитатой (т.е. каждый элемент в массиве - это содержимое, которое в настоящее время отображается в ящике сообщений в моем цикле foreach?

2) как вернуть случайный элемент из массива, как только он будет создан?

3) В качестве дополнения к моему вопросу ... мой xml-файл имеет только мотивирующие котировки на данный момент, но он будет иметь более вдохновляющие, забавные и т. Д. ... как я могу указать только включение цитат в массив если они находятся внутри тега MotivationalQuotes.

Спасибо за помощь!

public void motivate() 
      { 
       XmlDocument doc = new XmlDocument(); 
       doc.Load("quotations.xml"); 
       XmlNode Node = doc.DocumentElement; 

       foreach (XmlNode Node1 in Node.ChildNodes) 
       { 
       MessageBox.Show(Node1.FirstChild.InnerText); 

       } 
      } 
+0

Возможно, если бы вы могли мотивировать себя, чтобы прочитать правила первый .... 1 вопрос на вопрос. Вопросы должны быть конкретными. Вы, должно быть, сначала попробовали. И так далее. Вы должны прочитать их сами. –

+0

Добро пожаловать в StackOverflow! Хотя мы определенно хотим помочь людям с их проблемами в кодировании, и особенно приветствуем вопросы от новых пользователей, формат вопросов очень важен. Этот вопрос представляется очень широким, задавая сразу несколько вопросов, что затрудняет предоставление полезных ответов. Пожалуйста, прочитайте несколько правил сайта на [ask]. – Claies

+1

И вы, безусловно, не найдете людей, более охотно отвечающих на ваши вопросы, если вы пренебрегаете правилами сайта. – Claies

ответ

0

Вы должны использовать XDocument и LINQ.

Чтобы получить все котировки

using System.Xml.Linq; 

var quotes = XDocument 
.Load("quotations.xml") 
.Descendants("quote") 
.Select(q => q.Value) 
.ToArray(); 
+0

Почему downvote? –

+0

Спасибо за вашу помощь Ричард, я попробую это. – GaryDev

+0

Кто-то несчастный, что вы мне помогли, я думаю, мой пост был уже дважды опущен, прежде чем я даже успел прочитать колючие комментарии. Некоторые очень мелкие люди. Я искренне ценю ваш ответ, спасибо! – GaryDev

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