質問するログイン新規登録

回答編集履歴

1

まあ考えがあさかったんですがね

2019/01/11 01:43

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -30,4 +30,41 @@
30
30
  Console.WriteLine(string.Join(",", elem1));
31
31
  }
32
32
  }
33
+ ```
34
+
35
+ ---
36
+ namespaceの問題ならLocalName見るだけでもできそう。
37
+ というか、xmlそのものにそれほど詳しいのでないなら(xmlns属性がサンプルで削っていいものだと思うくらいなら)vsで変数参照してrootがnullでなかったら、Descendantsに引数わたさずに全部foreachして各XElementのプロパティをひととおり見るとか、それで分かんないプロパティはMicrosoftDocs見るとか、Console.WriteLineしてみるとかくらいのことは試しておいたほうがよいと思いますよ。
38
+
39
+ ```csharp
40
+ using System;
41
+ using System.Collections.Generic;
42
+ using System.Linq;
43
+ using System.Xml.Linq;
44
+
45
+ public class Program
46
+ {
47
+ public static void Main()
48
+ {
49
+ string str =
50
+ @"<?xml version=""1.0""?>
51
+ <Root InterfaceName=""IF"" InterfaceVersion=""1.0"" xmlns=""http://addr/path1/path2"">
52
+ <Child>
53
+ <GrandChild1>
54
+ <Elem1>foo1</Elem1>
55
+ <Elem2>bar1</Elem2>
56
+ </GrandChild1>
57
+ <GrandChild2>
58
+ <Elem3>foo2</Elem3>
59
+ <Elem4>bar2</Elem4>
60
+ </GrandChild2>
61
+ </Child>
62
+ </Root>";
63
+ var root = XElement.Parse(str);
64
+ var elem1 = from p in root.Descendants()
65
+ where p.Name.LocalName == "Elem1"
66
+ select p;
67
+ Console.WriteLine(string.Join(",", elem1));
68
+ }
69
+ }
33
70
  ```