C# 试图通过Linq to XML获取Guid属性时,Guid属性返回错误的值

C# 试图通过Linq to XML获取Guid属性时,Guid属性返回错误的值,c#,xml,xml-parsing,linq-to-xml,C#,Xml,Xml Parsing,Linq To Xml,这是我提取元素的方式,但当我尝试获取属性值时,我只得到一些数字,而不是Guid字符串: ... = from c in xdoc.Element(mdpr + "A") .Elements(mdpr + "B") .Elements(mdpr + "C") let data= c select new MyData

这是我提取元素的方式,但当我尝试获取属性值时,我只得到一些数字,而不是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>
...
。。。
17
...


更新

如果XML有“{”,则它可以工作:

 <mdpr:C guidNumber="4t56u27b-b784-4303-b710-95966b6e68ba" > // doesn't work
 <mdpr:C guidNumber="{4t56u27b-b784-4303-b710-95966b6e68ba}" > // work
//不起作用
//工作
但是如何得到这个值呢?

您想要属性的名称:


data.Attribute(“guidNumber”).Value

下面的代码片段工作正常:

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);
stringxml\u String=@”
17
";
var q=XElement.Parse(xml_string).subjections()
.Where(c=>c.Name.LocalName.ToString()==“c”).First()
.属性(“guidNumber”).值;
控制台写入线(q);

您知道这是一个无效的GUID字符串吗?它包含一个
t
,它不是十六进制字符否我已经更改了它,因为这里的问题GUID是有效的,但“{”会导致获取它的值的问题。不,这也不会返回GUID字符串。我只得到一些xml中不存在的数字000005。