1

次のようなxmlファイルがあります。

<Contacts>
   <CommandID>
       ShowInstalledProducts
   </CommandID>
</Contacts>

xml ファイルのリストを反復処理し、CommandId(この場合はShowInstalledProducts)の値を取得する必要があります。

私はxmlに非常に慣れていません。誰かが同じことで私を助けてくれますか。Linq を使用してこれを達成しようとしています。(ただし、他のソリューションも大歓迎です)

DirectoryInfo directoryInfo = new DirectoryInfo(@"T:\Commands"); FileInfo[] fileInfo = directoryInfo.GetFiles();

            foreach (FileInfo loop in fileInfo)
            {

                string doc = File.ReadAllText(loop.FullName);
                XmlDocument XMLDoc = new XmlDocument();
                XMLDoc.Load(doc);
                XMLDoc= stripDocumentNamespace(XMLDoc);
                //id = XMLDoc.Descendants("CommandID").First().Value;



            }

これは私が今まで行ってきたことであり、ファイルを読んで、子孫をゲル化しようとしています。ただし、各 xml ファイルには複数あり、それぞれの値を取得する必要があります。ここで立ち往生:(

4

2 に答える 2

3

ステップ1:linqpad.netにアクセスして、Linqpadアプリケーションをダウンロードします。これは、Linq式を記述、実行、および操作できるシンプルなエディターです。また、学ぶべき多くの組み込みの例があります。select Help --> Veiw samples(これを開く 必要があるかもしれません):ここに画像の説明を入力してください

ステップ2:次のコードをエディターに貼り付け、F5キーを押して実行します(C# Statement(s)ただし、その上の[言語]が選択されていることを確認してください)。遊んで、好きなように/必要に応じて微調整してください。

var bench = XElement.Parse(@"<Contacts>
                <Node>
                    Something
                </Node>
                <Node>
    Something else
                </Node>
                </Contacts>");

var listOfNodes = bench.Elements(); 
listOfNodes.Dump();

var content = listOfNodes.Select(x => x.Value); 
content.Dump();

これはあなたが始めるのに十分なはずです。楽しみ!:)

于 2012-12-21T05:53:55.333 に答える
2
fileInfo.SelectMany(fi => XDocument
                           .Load(fi.FullName)
                              .Descendants("CommandID")
                                .Select(e=>e.Value))

この LINQ コードは、すべてのファイルのすべての CommandId 値のリストを返す必要があります。

于 2012-12-21T12:17:25.670 に答える