0

私は C# を学んでおり、私がやろうとしていることの 1 つは、XML ファイルを読み込んで検索することです。

特定のノード (名前や ISBN など) で特定のキーワードを検索できる例をいくつか見つけました。

私が探していたのは、XML ファイル全体を検索して、キーワードのすべての可能な一致を見つけることでした。

LIST では "contains" でキーワードを検索できることは知っていますが、XML ファイルを検索するための同様の機能はありますか?

Visual Studio のインストール時に含まれる一般的な books.xml ファイルを使用しています。

4

3 に答える 3

0

既に知っているキーワードを探している場合は、単純なテキスト ファイルと同じように XML を解析し、S​​treamReader を使用して解析できます。ただし、XML で要素を探している場合は、XmlTextReader() を使用できます。次の例を検討してください。

using (XmlTextReader reader = new XmlTextReader(xmlPath))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        { 
            //do your code here
        }
    }
}

それが役に立てば幸い。:)

于 2012-10-11T02:34:32.120 に答える
0

たとえば、LINQ TO XMLを使用できます。この例では、要素と属性の両方 (名前と値) でキーワードを検索します。

private static IEnumerable<XElement> FindElements(string filename, string name)
{
    XElement x = XElement.Load(filename);
    return x.Descendants()
            .Where(e => e.Name.ToString().Equals(name) ||
                        e.Value.Equals(name) ||
                        e.Attributes().Any(a => a.Name.ToString().Equals(name) || 
                                                a.Value.Equals(name)));
}

そしてそれを使用します:

string s = "search value";
foreach (XElement x in FindElements("In.xml", s))
    Console.WriteLine(x.ToString());
于 2012-10-11T01:36:36.883 に答える
0

リーフ ノードのテキストに表示されるキーワードのみを検索する場合は、次の手順を試してください (このサンプルのbooks.xmlを使用)。

string keyword = "com";
var doc = XDocument.Load("books.xml");

var query = doc.Descendants()
    .Where(x => !x.HasElements &&
                x.Value.IndexOf(keyword, StringComparison.InvariantCultureIgnoreCase) >= 0);
foreach (var element in query)
    Console.WriteLine(element);

出力:

<genre>Computer</genre>
<description>A former architect battles corporate zombies,
      an evil sorceress, and her own childhood to become queen
      of the world.</description>
<genre>Computer</genre>
<title>MSXML3: A Comprehensive Guide</title>
<genre>Computer</genre>
<title>Visual Studio 7: A Comprehensive Guide</title>
<genre>Computer</genre>
<description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are
      integrated into a comprehensive development
      environment.</description>
于 2012-10-11T02:07:04.753 に答える