Web APIを使用してC#でリストに変換する必要があるxmlの形式でリクエストが届いています。xmlでWeb APIの変換を一覧表示する#
ここで私は
<OTA_HotelInvCountNotifRQ xmlns="http://www.zzz.com/OTA/2015/03"
TimeStamp="2015-03-10T09:41:51.982" Version="1.2"> <Inventories
HotelCode="10001"> <Inventory> <StatusApplicationControl Start="2015-03-16"
End="2015-03-30" Mon="0" Tue="0" Wed="0" Thur="0" Fri="0" Sat="1" Sun="1"
InvTypeCode="DLX" AllInvCode="False" /> <InvCounts> <InvCount CountType="2"
Count="17" /> </InvCounts> </Inventory> <Inventory>
<StatusApplicationControl Start="2015-03-16" End="2015-03-30"
AllInvCode="False" Mon="1" Tue="1" Wed="1" Thur="1" Fri="1" Sat="1" Sun="1"
InvTypeCode="STD"></StatusApplicationControl> <InvCounts> <InvCount
CountType="2" Count="7" /> </InvCounts> </Inventory> </Inventories>
</OTA_HotelInvCountNotifRQ>
を受け取り、要求XMLがここに私のC#の方法私は要求XMLを変換する必要があるリストオブジェクト
public class sampleclass
{
public class StatusApplicationControl
{
public string Start { get; set; }
public string End { get; set; }
public string Mon { get; set; }
public string Tue { get; set; }
public string Wed { get; set; }
public string Thur { get; set; }
public string Fri { get; set; }
public string Sat { get; set; }
public string Sun { get; set; }
public string InvTypeCode { get; set; }
public string AllInvCode { get; set; }
}
public class InvCount
{
public string CountType { get; set; }
public string Count { get; set; }
}
public class InvCounts
{
public InvCount InvCount { get; set; }
}
public class Inventory
{
public StatusApplicationControl StatusApplicationControl { get; set; }
public InvCounts InvCounts { get; set; }
}
public class Inventories
{
public string HotelCode { get; set; }
public List<Inventory> Inventory { get; set; }
}
public class HRootObject
{
public string TimeStamp { get; set; }
public string Version { get; set; }
public Inventories Inventories { get; set; }
}
}
ため
public HttpResponseMessage UpdateHotelAvailability(HttpRequestMessage request)
{
var doc = new XmlDocument();
doc.Load(request.Content.ReadAsStreamAsync().Result);
var serializer = new XmlSerializer(typeof(HRootObject));
using (var reader = XmlReader.Create(doc.InnerXml))
{
HRootObject Hobj = (HRootObject)serializer.Deserialize(reader);
}
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, 200);
return res;
}
C#クラスだです上記のクラスを使用してリストに追加します。私は今、パスに違法なエラーが発生しています。 d。 おかげ
更新:
これは私が唯一のスタートのためにこれを行っている
public static void ReadInventory()
{
XDocument doc = XDocument.Load(@"D:\\Sample\\Data2.xml");
XNamespace ns = doc.Root.Name.Namespace; // You will need to use this "ns" in every XPATH except attributes.
var v = from h in doc.Descendants(ns+"StatusApplicationControl")
select new StatusApplicationControl
{
Start = h.Attribute("Start").Value,
End = h.Attribute("End").Value
};
foreach (var item in v)
{
Console.Write("Start" + item.Start + " End " + item.End + "\r\n");
}
Console.WriteLine(v.Count());
}
...これを試してみて、私はドキュメントのInnerXmlプロパティノード
<OTA_HotelInvCountNotifRQ xmlns="http://www.zzz.com/OTA/2015/03"
TimeStamp="2015-03-10T09:41:51.982" Version="1.2"> <Inventories
HotelCode="10001"> <Inventory> <StatusApplicationControl Start="2015-03-16"
End="2015-03-30" Mon="0" Tue="0" Wed="0" Thur="0" Fri="0" Sat="1" Sun="1"
InvTypeCode="DLX" AllInvCode="False" /> <InvCounts> <InvCount CountType="2"
Count="17" /> </InvCounts> </Inventory> <Inventory>
<StatusApplicationControl Start="2015-03-16" End="2015-03-30"
AllInvCode="False" Mon="1" Tue="1" Wed="1" Thur="1" Fri="1" Sat="1" Sun="1"
InvTypeCode="STD"></StatusApplicationControl> <InvCounts> <InvCount
CountType="2" Count="7" /> </InvCounts> </Inventory> </Inventories>
</OTA_HotelInvCountNotifRQ>
"パスに不正なエラー"が表示される場合は、まずパスを確認する必要があります。パスを正しく解決できたら、LINQ to XMLを使用してXML文字列からリストを取得できます。 – A3006
@ A3006どのようにそれを行うにはどのようなアイデア? – Melvin
request.Content.ReadAsStreamAsync()には何が入っていますか? – A3006