2017-06-29 16 views
-2

を分析することは、誰かが私には、次のXMLを解析する方法を考え出すことができますしてください:読書やXML文字列

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

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

私は「」の値を参照する方法を教えてください。 基本的に、名前が特定の文字、例えば「m」で始まるスタッフ全員を返すようにしたい

+3

:検索特定の属性(XPathの-LINQを持つ要素あなたがオブジェクトを持っていたら

MyObjType MyObj = DeserializeXMLFileToObject<MyObjType>(FilePath); 

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; } 

あなたはこのようなものを使用してこのメ​​ソッドを呼び出しますXMLへ)(C#)](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/how-to-find-elements-with-a-specific-attribute- xpath-linq-to-xml) –

+0

これは非常に奇妙に構築されたXMLのようですが、より大きなファイルの存在。 – PaulF

+0

それはApiからの返信です –

答えて

0

あなたが試したコードは何も提供していないので、私は少しお手伝いできます。 First()ような何か、ご希望のデータ

チェックを取得するために解析する

  • あなたのノード/要素を見つけるためにDescendants方法(チェインそれを)使用
  • コールであなたを助けるために

    1. 使用XDocumentthisの使用についての小さな例の回答XDocumentDescendants 希望すると便利です。

  • +0

    正直言って、これは私が以前にやったことではありません。私はグーグルで、私が欲しいものを私に与えてくれない別のものを試しました。 –

    +0

    @ Richard.Gale私はあなたのための例へのリンクで答えを更新しました。 –

    0

    このリファレンスを使用して、xmlファイルをオブジェクトに読み込みます。 [どのように

    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); 
    
    }