开发者

Reading an XML File with .NET

I am new to xml and unable to find a way to get content in between tags. My XML file is

<?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="开发者_JAVA技巧c:\w2.xml">
    <word>Text</word>
    <number>67</number>
  </file>
</block1>


LINQ to XML is a great place to start. Consider the following code to parse your 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 );
}

You can, of course, load the XML directly from a file using XDocument.Load instead of using Parse to read an XML string. XDocument is in the System.Xml.Linq namespace. Frankly, I would start there, but there are other options to work with XML in the System.Xml namespace (XmlReader.Create, etc.).


You need to use an XML Query language. I would recommend LINQ to XML if you're using .Net 3.5 or XPath if you're using something earlier. XPath has the advantage of being an industry standard, but LINQ to XML is a much 'cleaner' API, in my opinion.

How to query XML with an XPath expression by using Visual C# - Tutorial on using XPath

LINQ to XML Video Tutorial

MSDN XPath Examples - From the XPath Reference

Location Paths - Includes text() function for example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜