2

単語数を取得するために resx データを単語にコピーしなければならないというまったくのフラストレーションから、私はそのための独自のツールを書き始めました。

それは私に問題に遭遇させました。Resources.resxファイルにアイコンなどがあります。また、使用されているプロジェクトに応じた相対パスがあります。

彼らは明らかに持っているべきです。

別のアプリケーションでResxファイルを解析して、Value列から単語を数えようとすると。

相対パスを解析できないため、エラーが発生しています。それらは、私の wordcount アプリケーションに存在しないフォルダーに移動してしまいます。

これらの値を解析するときに、アプリをだまして正しいフォルダーを探す方法を知っている人はいますか?

そもそもなぜこれらの値を解析しているのかよくわかりません。私が気にするすべての文字列を取得する必要があります。

私はResXReaderを使用しています

ResXResourceReader reader = new ResXResourceReader(filename);
foreach(System.Collections.DictionaryEntry de in reader)
{
   if (((string)de.Key).EndsWith(".Text"))
   {
      System.Diagnostics.Debug.WriteLine(string.Format("{0}: {1}", de.Key, de.Value));
   }
}

私はここでこれを見つけました: Word Count of .resx files

foreachでエラーになります。..\common\app.ico たとえば。

誰でもこれを行う方法について考えがありますか?

4

2 に答える 2

2

大丈夫。そのため、ソリューションは予想よりも少し簡単でした。

  1. 古いクラスを使用していました。XmlDataDocument の代わりに XDocument を使用する必要がありました

第二に、LINQ は爆弾です。

私がしなければならなかったのはこれだけでした:

try
{
    XDocument xDoc = XDocument.Load(resxFile);

    var result = from item in xDoc.Descendants("data")
    select new
    {
        Name = item.Attribute("name").Value,
        Value = item.Element("value").Value
    };

    resxGrid.DataSource = result.ToArray();           
}

これらの属性/要素を (String) にキャストすると、空の文字列を許可することもできます

これが誰かを助けることを願っています!

于 2013-02-27T22:50:32.433 に答える
-1

この目的のために ResXResourceReader を使用してみてください - http://msdn.microsoft.com/en-us/library/czdde9sc.aspxを参照してください

于 2014-03-29T07:45:46.330 に答える