2012-04-24 56 views
0

所以,最近我一直在用这个方法返回一个字符串:GET byte []并返回使用元素值?

string uri = "http://localhost:8000/Service/Student"; 
XDocument xDoc = XDocument.Load(uri); 
var studentcollection = xDoc.Descendants("Student") 
    .Select(n => new 
    { 
     FirstName = n.Element("FirstName").Value, 
    }) 
    .ToList(); 

,它工作正常,但如果从Web服务中的一个值是一个byte []将这个方法返回一个值?如果不是,你将如何结合该方法(因为我用它)并返回一个字节[]?

+0

林试图说'.Value.ToArray'?这可能是错误的 – 2012-04-24 07:00:13

+2

[Extract a Byte \ [\]从Linq到Xml的XElement的可能的重复](http://stackoverflow.com/questions/319407/extract-a-byte-from-an-xelement-with -linq-to-xml) – 2012-04-24 07:03:19

+0

它“可能”可能是一个重复的即时消息不完全确定,从我的web服务我已经转换为base64,但我真的不想转换字节[],我想回到未转换。 – 2012-04-24 07:52:20

回答

1

你是说一个元素可能会返回一个byte[]还是真的是一个64位编码的字符串代表一个byte[]?如果是后者,你可以从值提取字节:

byte[] decoded = Convert.FromBase64String(value); 

全码:

string uri = "http://localhost:8000/Service/Student"; 
XDocument xDoc = XDocument.Load(uri); 
var studentcollection = xDoc.Descendants("Student") 
    .Select(Convert.FromBase64String(n.Element("Picture").Value)) 
    .ToList(); 

,这将给你的提炼出来的“图片”元素为每个学生byte[]列表(相应地更改代码以创建图片作为学生实例的一部分)。