LINQ to XML и WIX проблема - PullRequest
2 голосов
/ 23 декабря 2009

У меня есть документ WIX XML, который содержит более 2000 тегов файлов. Я пытаюсь создать программу с использованием LINQ to XML, которая может обновлять атрибут каждого тега файла. Мой код выглядит следующим образом для загрузки текущих атрибутов в словарь.

 XElement root = XElement.Load(filePath);
 XNamespace wix = @"http://schemas.microsoft.com/wix/2006/wi";

 IEnumerable<string> fileId =
       from seg in root.Descendants(wix + "File")
       select (string)seg.Attribute(wix + "Id");

 IEnumerable<string> path =
       from seg in root.Descendants(wix + "File")
       select (string)seg.Attribute(wix + "Source");

 string[] Position1 = fileId.ToArray();
 string[] Position2 = path.ToArray();

 for (int i = 0; i < Position1.Length; i++)
 {
       xmlDataRaw.Add(Position1[i], Position2[i]);
 }

теперь проблема в том, что моя программа говорит, что IEnumerable fileID и path оба содержат только «null», но я знаю, что тег file существует и что у каждого из них есть атрибут ID и Source. Мысли? * * 1004

Ответы [ 2 ]

3 голосов
/ 23 декабря 2009

Атрибутам не требуются пространства имен, попробуйте:

IEnumerable<string> fileId =
       from seg in root.Descendants(wix + "File")
       select (string)seg.Attribute("Id");

 IEnumerable<string> path =
       from seg in root.Descendants(wix + "File")
       select (string)seg.Attribute("Source");
1 голос
/ 23 декабря 2009

Не используйте пространство имен при попытке доступа к Атрибуту. Я заметил, что вам нужно только пространство имен, когда вы используете такие методы, как Descendant и Element.

Таким образом, ваш код должен быть (например)

 IEnumerable<string> fileId =
       from seg in root.Descendants(wix + "File")
       select (string)seg.Attribute("Id");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...