2015-12-17 4 views
0

У меня есть текстовый файл содержит 500+ xmlelements как следующее:C# Чтение XmlElement из текстового файла

<Data a="a" b="b" c="c" d="d"><Date runDt="01-01-1900" /></Data> 

Может кто-то пожалуйста, покажите мне, как читать/загрузить его, так что я могу получить некоторые атрибуты/элементы? И как только я манипулирую данными, запишите их обратно в новый текстовый файл (и должен быть .txt-файлом без каких-либо заголовков xml).

Спасибо :)

+3

Вы должны размещать код, который вы пытались и объяснить, что не работает правильно - и что вы хотели бы достичь. Вы не должны спрашивать «пожалуйста, напишите мой код для меня» на этом сайте. –

+2

Возможный дубликат [Как разобрать XML-файлы?] (Http://stackoverflow.com/questions/55828/how-does-one-parse-xml-files) –

+0

попробуйте loding текст в xmldocument и используйте xpath для поиск – Byron

ответ

0

Самый простой способ заключается в использовании:

использованием System.Xml;

XmlDocument xml = new XmlDocument(); 
xml.InnerXml = @"<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>"; 
Console.WriteLine (xml.ChildNodes [0].Attributes [0].InnerText); 

Напечатает

Использование XmlDocument очень легко, просто проверить свои поля, переменные и методы.

+0

Спасибо. Я пытался использовать XmlDocument.Load(), но не работал, потому что я не был действительно документом xml. Не используйте XmlTextReader для синтаксического анализа в строке. – Kyle

0

Попробуйте

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = 
       "<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>\n" + 
       "<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>\n" + 
       "<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>\n" + 
       "<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>\n" + 
       "<Data a=\"a\" b=\"b\" c=\"c\" d=\"d\"><Date runDt=\"01-01-1900\" /></Data>\n"; 

      //xml can only contain one root tag. Need to wrap xml in root tag if one is missing 
      input = string.Format("<Root>{0}</Root>", input); 

      XDocument doc = XDocument.Parse(input); 

      // if loading from file 
      //string input = File.ReadAllText(filename); 
      //input = string.Format("<Root>{0}</Root>", input); 
      //XDocument doc = XDocument.Load(filename); 

      var results = doc.Descendants("Data").Select(x => new 
      { 
       a = x.Attribute("a").Value, 
       b = x.Attribute("b").Value, 
       c = x.Attribute("c").Value, 
       d = x.Attribute("d").Value, 
       date = DateTime.Parse(x.Element("Date").Attribute("runDt").Value) 
      }).ToList(); 

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