2

出于不得不将 resx 数据复制到 word 中以获得字数的绝对挫败感,我开始编写自己的工具来做到这一点。

好吧,这让我遇到了一个问题。我在 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));
   }
}

我在这里找到了这个:.resx 文件的字数

它在 foreach 上出错。..\common\app.ico 例如。

有人知道如何做到这一点吗?

4

2 回答 2

2

好的。所以解决方案比预期的要容易一些。

  1. 我正在使用过时的课程。我应该一直使用 XDocument 而不是 XmlDataDocument

其次,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 回答