これでfoo1が取れる(elem1はnullにならない)ので、ロードできてないとか、これだとないと思いますが文字コードがおかしいとか、何か別の要因な気がします。
VisualStudioでブレークポイントおいて、rootの内容を見てみたらいかがでしょうか?
csharp
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Xml.Linq;
5
6public class Program
7{
8 public static void Main()
9 {
10string str =
11@"<?xml version=""1.0""?>
12<Root>
13 <Child>
14 <GrandChild1>
15 <Elem1>foo1</Elem1>
16 <Elem2>bar1</Elem2>
17 </GrandChild1>
18 <GrandChild2>
19 <Elem3>foo2</Elem3>
20 <Elem4>bar2</Elem4>
21 </GrandChild2>
22 </Child>
23</Root>";
24var root = XElement.Parse(str);
25var elem1 = from el in root.Descendants("Elem1")
26 select el;
27Console.WriteLine(string.Join(",", elem1));
28 }
29}
namespaceの問題ならLocalName見るだけでもできそう。
というか、xmlそのものにそれほど詳しいのでないなら(xmlns属性がサンプルで削っていいものだと思うくらいなら)vsで変数参照してrootがnullでなかったら、Descendantsに引数わたさずに全部foreachして各XElementのプロパティをひととおり見るとか、それで分かんないプロパティはMicrosoftDocs見るとか、Console.WriteLineしてみるとかくらいのことは試しておいたほうがよいと思いますよ。
csharp
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Xml.Linq;
5
6public class Program
7{
8 public static void Main()
9 {
10string str =
11@"<?xml version=""1.0""?>
12<Root InterfaceName=""IF"" InterfaceVersion=""1.0"" xmlns=""http://addr/path1/path2"">
13 <Child>
14 <GrandChild1>
15 <Elem1>foo1</Elem1>
16 <Elem2>bar1</Elem2>
17 </GrandChild1>
18 <GrandChild2>
19 <Elem3>foo2</Elem3>
20 <Elem4>bar2</Elem4>
21 </GrandChild2>
22 </Child>
23</Root>";
24var root = XElement.Parse(str);
25var elem1 = from p in root.Descendants()
26 where p.Name.LocalName == "Elem1"
27 select p;
28Console.WriteLine(string.Join(",", elem1));
29 }
30}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/11 00:23
2019/01/11 00:51
2019/01/11 01:15