使用C#解析Resx文件在相对路径上崩溃

时间:2013-02-27 19:38:22

标签: c# globalization

完全不必将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));
   }
}

我在这里找到了这个:Word Count of .resx files

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

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

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

  1. 我使用的是过时的课程。 我本来应该使用XDocument而不是XmlDataDocument
  2. 其次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)

    ,甚至可以允许空字符串

    希望这有助于某人!

答案 1 :(得分:-1)

尝试使用ResXResourceReader实现此目的 - 请参阅http://msdn.microsoft.com/en-us/library/czdde9sc.aspx