读取和分析XML字符串

时间:2017-06-29 15:26:15

标签: c# xml

请有人帮我解决如何分析以下XML:

<staff name="peter">
  <staff name="martin">
     <staff name="mike" />
  </staff>

  <staff name="stuart" />
</staff>

如何引用&#34;&#34;中的值? ? 基本上我想要退回所有名字以特定字母开头的员工,例如&#39; m&#39;

2 个答案:

答案 0 :(得分:0)

由于您未提供任何已尝试过的代码,我可以为您提供一些指导。

  1. 使用XDocument来帮助您解析
  2. 使用Descendants方法(链接它)来定位您的节点/元素
  3. 拨打First()之类的内容以获取所需数据
  4. 查看this答案,了解有关XDocumentDescendants用法的小例子 希望这有帮助

答案 1 :(得分:0)

使用此引用将xml文件读入对象。

    public static T DeserializeXMLFileToObject<T>(string XmlFilename)
{
    T returnObject = default(T);
    if (string.IsNullOrEmpty(XmlFilename)) return default(T);

    try
    {
        StreamReader xmlStream = new StreamReader(XmlFilename);
        XmlSerializer serializer = new XmlSerializer(typeof(T));
        returnObject = (T)serializer.Deserialize(xmlStream);
    }
    catch (Exception ex)
    {
        ExceptionLogger.WriteExceptionToConsole(ex, DateTime.Now);
    }
    return returnObject;
}

您可以使用以下内容调用此方法:

MyObjType MyObj = DeserializeXMLFileToObject<MyObjType>(FilePath);

一旦有了对象:

for(int i = 0; i < StaffMemebers.length; i++)
{
     NamesStartingWithLetter(StaffMemebers[i],'A',ref NameList);
}

public void NamesStartingWithLetter(StaffObject staffMember,char letter,ref List<string> NamesFound)
{
     if(staffMember.Name[0]==letter)
          NamesFound.Add(staffMember.Name);
     if(staffMember.staff!=null)
          NamesStartingWithLetter(staffMember.staff, letter, ref NamesFound);

}