使用.NET读取XML文件

时间:2010-04-02 04:58:48

标签: c# .net xml

我是xml的新手,无法找到在标记之间获取内容的方法。 我的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>

2 个答案:

答案 0 :(得分: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 );
}

当然,您可以使用XDocument.Load直接从文件加载XML,而不是使用Parse来读取XML字符串。 XDocument位于System.Xml.Linq命名空间中。坦率地说,我会从那里开始,但在System.Xml命名空间(XmlReader.Create等)中还有其他选项可以使用XML。

答案 1 :(得分:1)

您需要使用XML Query语言。如果您使用.Net 3.5或XPath,如果您之前使用的话,我会建议LINQ to XML。 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参考

Location Paths - 例如包含 text()函数。