0

XML ファイルを検索し、実行時にキーワードのリストから属性名を比較しようとしています。この投稿で提案されているように、DelegatePredicateBuilder を使用しました: Linq to objects Predicate Builder

xml ファイルは次のとおりで、name 属性の値を検索する必要があります。

 <group name="Install Software">...</group>

結果は常に false を返しました。p を調べると、p が存在しないと表示されます。述語を調べると、次のようになります。

predicate   {Method = {Boolean <Or>b__2(System.Xml.Linq.XElement)}} System.Func<System.Xml.Linq.XElement,bool>

述語の内容を表示する方法を知りたいです。メソッドの呼び出しは次のとおりです。提供されたキーワードは「Install」であるため、検出されるはずですが、検出されません。

    private IEnumerable<XElement> FindAttribute(XElement doc, String attributeType, String attributeName, List<string> KeywordList)
    {
        var predicate = DelegatePredicateBuilder.False<XElement>();
        foreach (string keyword in keywordList)
        {
            string temp = keyword;
            predicate = predicate.Or(p => (p.Attribute(attributeName).Value).ToString().Contains(temp));
        }
        var groupResult = doc.DescendantsAndSelf(attributeType)
                      .Where(predicate);
        if (groupResult.Count() == 0)
            return null;
        else
            return groupResult;
    }

誰かが私を正しい方向に向けることができれば幸いです。ところで、これは私の最初の投稿であり、正しく投稿する方法を学んでいます。

4

0 に答える 0