C#来自长字符串的多个子字符串

时间:2012-12-04 18:17:18

标签: c# xml-parsing substring

我正在尝试解析一个长字符串(它实际上是一个xml文件)。

我熟悉substring但我不知道如何遍历这个长字符串(xml文件)并将其子字符串分配到数组中。

我完全相信这是一个简单的问题,但我很难过。

2 个答案:

答案 0 :(得分:0)

另一个选择是将XML反序列化为类。然后,您可以创建方法和属性来处理各种逻辑需求。

答案 1 :(得分:0)

如果你想解析一个对象列表,我建议你使用LINQ TO XML

这个小样本:

首先是我的XML文件

<?xml version="1.0" encoding="utf-8" ?>
<People>
  <Person>
    <Name>Luis</Name>
    <LastName>Laurent</LastName>
    <Age>24</Age>
  </Person>
  <Person>
    <Name>Juan</Name>
    <LastName>Perez</LastName>
    <Age>24</Age>
  </Person>
  <Person>
    <Name>Karla</Name>
    <LastName>Gutierrez</LastName>
    <Age>24</Age>
  </Person>
</People>

然后是我的.Net C#代码

namespace Demo.Stackoverflow
{
    using System;
    using System.Linq;
    using System.Xml.Linq;

    public class Person
    {
        public string Name { get; set; }  
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ReadXML();
            Console.ReadLine();
        }

        private static void ReadXML()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Resources\\File.xml";
            XDocument doc = XDocument.Load(path);

            var People = (from people in doc.Descendants("Person")
                            select new Person()
                            {
                                Name = null != people.Descendants("Name").FirstOrDefault() ?
                                         people.Descendants("Name").First().Value : string.Empty,

                                LastName = null != people.Descendants("LastName").FirstOrDefault() ?
                                         people.Descendants("LastName").First().Value : string.Empty,

                                Age = null != people.Descendants("Age").FirstOrDefault() ?
                                         Convert.ToInt32(people.Descendants("Age").First().Value) : 0
                            }).ToList();
        }
    }
}