타사 웹 서비스를 호출합니다. 이 서비스는 일반 old xml로 응답을 반환합니다. 샘플 응답은 다음과 같습니다.LINQ를 사용하여 XML 구문 분석
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.somedomain.com/Response.xsd">
<Results>
<Result>
<ID>1</PointID>
<Name>Testing</Name>
</Result>
</Results>
</Response>
이 XML을 LINQ를 통해 CLR 개체로로드하려고합니다. 내 CLR 개체 선언은 다음과 같습니다 : CLR은 객체로이 XML을로드하기위한 시도에서
[DataContract]
public class Result
{
private int id = 0;
private string name = string.Empty;
[DataMember]
public int ID
{
get { return id; }
set { id = value; }
}
[DataMember]
public string Name
{
get { return name; }
set { name = value; }
}
public Result()
{
}
}
, 나는 다음과 같은 접근 방식으로 갈거야 :
string response = UseWebService();
XDocument xml = XDocument.Parse(response);
var results = from result in xml.Descendants().Descendants()
select new Result
{
ID = Convert.ToInt32(result.Descendants("ID")),
Name = result.Descendants("Name").ToString()
};
List<Result> resultList = results.ToList();
return resultList;
이 코드를 사용하는 경우,
Unable to cast object of type '<GetDescendants>d__a' to type 'System.IConvertible'.
"ID = Convert.ToInt32 ..."라고하는 행을 주석 처리하면 작동합니다. 그러나 이름은 "System.Xml.Linq.XContainer + d__a"로 설정됩니다. 내가 도대체 뭘 잘못하고있는 겁니까? XML을 일부 POCO에로드하려고합니다.
제공할만한 통찰력을 가져 주셔서 감사합니다.
왜 "개체 참조가 개체의 인스턴스로 설정되지 않습니다." 이 접근법에 오류가 있습니까? 너무 이상해. – Villager