0

これは要素を抽出する方法ですが、属性の値を取得しようとすると、Guid 文字列の代わりに数値が取得されます。

... = from c in xdoc.Element(mdpr + "A")
                    .Elements(mdpr + "B")
                    .Elements(mdpr + "C")
      let data= c                                   
      select new MyData
      {
          state = (string)data.Element(mdpr + "state"),
          TEMP = (string)data.Attribute("guidNumber") // TEMP is string
...

これは XML です。

...
<mdpr:B>
    <mdpr:C guidNumber="4t56u27b-b784-4303-b710-95966b6e68ba" >
      <mdpr:state>17</mdpr:state>
...



更新

XML に '{' が含まれている場合は、次のように機能します。

 <mdpr:C guidNumber="4t56u27b-b784-4303-b710-95966b6e68ba" > // doesn't work
 <mdpr:C guidNumber="{4t56u27b-b784-4303-b710-95966b6e68ba}" > // work

しかし、この値を取得するにはどうすればよいでしょうか。

4

2 に答える 2

0

属性の値が必要です:

data.Attribute("guidNumber").Value

于 2013-08-14T09:15:28.027 に答える
0

This snippet below works to be fine:

String xml_string = @"<root xmlns:mdpr=""someUri"">
                          <mdpr:A>
                              <mdpr:B>
                              <mdpr:C guidNumber=""4t56u27b-b784-4303-b710-95966b6e68ba"" >
                                <mdpr:state>17</mdpr:state>
                              </mdpr:C>
                              </mdpr:B>
                          </mdpr:A>
                      </root>";

var q = XElement.Parse(xml_string).Descendants()
          .Where(c => c.Name.LocalName.ToString() == "C").First()
          .Attribute("guidNumber").Value;

Console.WriteLine(q);
于 2013-08-14T12:53:07.947 に答える