2010-04-02 2 views
1

Я новичок в xml и не могу найти способ получить контент между тегами. Мой файл XML являетсяЧтение XML-файла с .NET

<?xml version="1.0" encoding="utf-8"?> 
<block1> 
    <file name="c:\w0.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w1.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w2.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1> 
+1

Пожалуйста, расскажите, что вы пробовали. –

ответ

1

Вы должны использовать язык XML Query. Я бы порекомендовал LINQ to XML, если вы используете .Net 3.5 или XPath, если вы используете что-то раньше. XPath имеет то преимущество, что является отраслевым стандартом, но LINQ to XML - это, по-моему, очень «чистый» API.

How to query XML with an XPath expression by using Visual C# - Руководство по использованию XPath

LINQ to XML Video Tutorial

MSDN XPath Examples - Из XPath Reference

Location Paths - Включает текст() функцию, например.

5

LINQ to XML - отличное место для начала. Рассмотрим следующий код для анализа XML.

string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<block1> 
    <file name=""c:\w0.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w1.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w2.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1>"; 

XDocument document = XDocument.Parse(xml); 

var block = from file in document.Descendants("file") 
      select new 
      { 
       Name = file.Attribute ("name").Value, 
       Word = file.Element("word").Value, 
       Number = (int)file.Element("number") 
      }; 

foreach (var file in block) 
{ 
    Console.WriteLine("{0}\t{1}\t{2}", file.Name, file.Word, file.Number); 
} 

Вы можете, конечно, загружать XML непосредственно из файла, используя XDocument.Load вместо использования Разбор читать строку XML. XDocument находится в пространстве имен System.Xml.Linq. Честно говоря, я бы начал там, но есть другие варианты работы с XML в пространстве имен System.Xml (XmlReader.Create и т. Д.).

+1

@ Энтони: не 'XmlTextReader'. 'XmlReader.Create'. –

+0

Спасибо, Джон. Я собираюсь показать то, что знаю. Я забыл (почти) все о других методах, поскольку LINQ пришел! Очень трагично. –

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