回答編集履歴

1

見直しキャンペーン中

2023/07/23 05:35

投稿

TN8001
TN8001

スコア10013

test CHANGED
@@ -1,133 +1,67 @@
1
1
  こうでいいと思うのですが、どうでしょうか。
2
2
 
3
-
4
-
5
- ```C#
3
+ ```cs
6
-
7
4
  using System;
8
-
9
5
  using System.IO;
10
-
11
6
  using System.IO.Compression;
12
-
13
7
  using System.Linq;
14
-
15
8
  using System.Text;
16
-
17
9
  using System.Xml;
18
-
19
10
  using System.Xml.Linq;
20
11
 
21
-
22
-
23
12
  namespace Questions291429
24
-
25
13
  {
26
-
27
14
  class Program
28
-
29
15
  {
30
-
31
16
  static void Main()
32
-
33
17
  {
34
-
35
18
  var xmldoc =
36
-
37
19
  @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
38
-
39
20
  <PCROOT>
40
-
41
21
  <PInfo Key=""0"">oll</PInfo>
42
-
43
22
  <PInfo Key=""0"">tll</PInfo>
44
-
45
23
  <PInfo Key=""1"">ools</PInfo>
46
-
47
24
  <PInfo Key=""1"">oljl</PInfo>
48
-
49
25
  <PInfo Key=""1"">ollj</PInfo>
50
-
51
26
  </PCROOT>";
52
27
 
53
-
54
-
55
28
  var xdoc = XDocument.Parse(xmldoc);
56
-
57
29
  Console.WriteLine(xdoc.ToString());
58
-
59
30
  GZipCompress(xdoc, @"pc1.gz");
60
31
 
61
-
62
-
63
32
  var xdocloaded = GZipDecompress(@"pc1.gz");
64
-
65
33
  var key0 = xdocloaded.Element("PCROOT")
66
-
67
34
  .Elements("PInfo")
68
-
69
35
  .Where(p => p.Attribute("Key").Value == "1");
70
36
 
71
-
72
-
73
37
  foreach(var i in key0)
74
-
75
38
  {
76
-
77
39
  Console.WriteLine(i.Value);
78
-
79
40
  }
80
41
 
81
-
82
-
83
42
  Console.ReadKey();
84
-
85
43
  }
86
44
 
87
-
88
-
89
45
  static void GZipCompress(XDocument xdin, string gzpath)
90
-
91
46
  {
92
-
93
47
  using(var fs = File.Create(gzpath))
94
-
95
48
  using(var gs = new GZipStream(fs, CompressionMode.Compress))
96
-
97
49
  // しなくても読めたが中のファイルにBOMが付くのが気持ち悪い場合
98
-
99
50
  //using(var writer = new XmlTextWriter(gs, new UTF8Encoding(false)))
100
-
101
51
  {
102
-
103
52
  //xdin.Save(writer);
104
-
105
53
  xdin.Save(gs);
106
-
107
54
  }
108
-
109
55
  }
110
56
 
111
-
112
-
113
57
  static XDocument GZipDecompress(string gzpath)
114
-
115
58
  {
116
-
117
59
  using(var fs = new FileStream(gzpath, FileMode.Open, FileAccess.Read, FileShare.Read))
118
-
119
60
  using(var gs = new GZipStream(fs, CompressionMode.Decompress))
120
-
121
61
  {
122
-
123
62
  return XDocument.Load(gs);
124
-
125
63
  }
126
-
127
64
  }
128
-
129
65
  }
130
-
131
66
  }
132
-
133
67
  ```