2013-04-03 3 views
0

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

StorageFile xmlFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync("Content1.xml"); 
XmlDocument xmlDoc; 
xmlDoc = await XmlDocument.LoadFromFileAsync(xmlFile); 
System.Xml.Linq.XDocument duc = System.Xml.Linq.XDocument.Parse(xmlDoc.GetXml()); 

var query= 
    from Date in duc.Root.Elements("Serial") 
    where Date.Attribute("No").Value=="1" 
    from Current in Date.Elements("Current") 
    select new { 
     NarratedBy=Current.Attribute("NarratedBy").Value, 
     value=Current.Attribute("Date").Value 
    }; 

foreach(var Date in query) { 
    System.Diagnostics.Debug.WriteLine("{0}\t{1}", Date.NarratedBy, Date.value); 
} 
+0

внутри каждого цикла, что мне нужно изменить, чтобы получить более двух значений/данных? – maha

ответ

1

У вас уже есть весь XML-документ, загруженный в переменную duc.

Эта линия отвечает за что:

System.Xml.Linq.XDocument duc = System.Xml.Linq.XDocument.Parse(xmlDoc.GetXml()); 
+0

внутри цикла foreach я использовал условие для отображения некоторых конкретных данных, и теперь я хочу отобразить все данные, которые присутствуют в документе xml. – maha

+0

использовать 'duc.ToString()'. Вы запрашиваете документ, не меняя его. – MarcinJuraszek

+0

В моем файле xml у меня есть 2 блока, например и ..i объявили некоторые атрибуты внутри обоих блоков. Теперь я хочу получить все данные, которые я объявил в . Так что мне делать? – maha

0

, то вы можете просто получить ваши XDocument детали, например в string переменной с расширением XDocument ToString()

+0

В моем файле xml у меня есть 2 блока, например и ..i объявили некоторые атрибуты внутри обоих блоков. Теперь я хочу получить все данные, которые я объявил в . Так что мне делать? – maha

+0

Уточните, пожалуйста, ваш вопрос (или отредактируйте его). Приведите пример и четко скажите, что вы хотите сделать. – lexeRoy

+0

рассмотрите вышеуказанный вопрос .. в том, что я получил значение рассказанного и даты. В моем xml у меня есть 5 значений Narratedby, ArabicDate, EnglishDate, HadithBody, ReferencedBy..Но я хочу получить все значения.so что мне нужно нужно сделать? – maha

0

У вас есть все данные уже:

xmlDoc = await XmlDocument.LoadFromFileAsync(xmlFile); // data loadded 
System.Xml.Linq.XDocument duc = System.Xml.Linq.XDocument.Parse(xmlDoc.GetXml()); // data parsed 

==========

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

class Program { 
static void Main(string[] args) { 
// this is a sample string. Use your file instead 
string s = "<catalog>" + 
"<book id=\"bk101\" author=\"Gambardella, Matthew\" title=\"XML Developer's Guide\" genre=\"Computer\"/>" + 
"<book id=\"bk102\" author=\"Ralls, Kim\" title=\"Midnight Rain\" genre=\"Fantasy\"/>" + 
"</catalog>"; 

XmlDocument xdoc = new XmlDocument(); 
      xdoc.LoadXml(s); // here we load data 
// here we get attributes. I have three, you will add three more. Also you may want to use string array instead of variables 
      foreach (XmlNode task in xdoc.DocumentElement.ChildNodes) 
{ 
       string author = task.Attributes["author"].InnerText; 
       string title = task.Attributes["title"].InnerText; 
       string genre = task.Attributes["genre"].InnerText; 
      } 
     } 
    } 
+0

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

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