c# - 如何从此 XML 请求中检索日期?
问题描述
我正在尝试从此 XML 请求中获取开始日期和结束日期以及酒店代码:
<OTA_HotelAvailGetRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="201905140331" TimeStamp="2019-05-14T15:31:09.184+08:00" Version="2.3" PrimaryLangID="en-us">
<POS>
<Source>
<RequestorID MessagePassword="NDMhc@219" Type="5" ID="2363">
<CompanyName Code="C" CodeContext="963"/>
</RequestorID>
</Source>
</POS>
<HotelAvailRequests>
<HotelAvailRequest>
<DateRange Start="2019-05-14" End="2019-05-19"/>
<RatePlanCandidates>
<RatePlanCandidate>
<HotelRefs>
<HotelRef HotelCode="26604"/>
</HotelRefs>
</RatePlanCandidate>
</RatePlanCandidates>
<RoomTypeCandidates>
<RoomTypeCandidate Quantity="1">
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
</GuestCounts>
</RoomTypeCandidate>
</RoomTypeCandidates>
</HotelAvailRequest>
</HotelAvailRequests>
</OTA_HotelAvailGetRQ>
我试过使用这段代码:
var rootElement = XElement.Parse(doc.ToString());
var date = rootElement.Element("OTA_HotelAvailGetRQ").Element("HotelAvailRequest").Element("DateRange").Attribute("Start").Value;
Console.WriteLine(date);
但我收到一个错误:
你调用的对象是空的
解决方案
试试这个方法:
XDocument doc = XDocument.Load("xml.xml");
XNamespace ns = "http://www.opentravel.org/OTA/2003/05";
XElement dateRange = doc.Descendants(ns + "DateRange").FirstOrDefault();
DateTime dateStart = DateTime.Parse(dateRange.Attribute("Start").Value);
DateTime dateEnd = DateTime.Parse(dateRange.Attribute("End").Value);
XElement hotelRef = doc.Descendants(ns + "HotelRef").FirstOrDefault();
int hotelCode = int.Parse(hotelRef.Attribute("HotelCode").Value);
推荐阅读
- windows - 移动文件批处理不能通过双击工作,但可以从命令行工作
- arduino - 串行命令后保持 LED 亮起
- php - sql查询太慢
- javascript - 在 ReactJS 中定义函数时,仅在括号中使用括号和花括号有什么区别?
- javascript - 如何修复套接字 io 中的 400 错误错误请求?
- c++ - 无法生成 Mandelbrot 矩阵以将其保存到 C++ 线程中的文件
- c# - 我无法反序列化我的 json api 上的可变属性日期
- java - 需要从文件中获取一行到队列中,而不是整个文件文本
- rest - 套接字可以代替 HTTP 请求吗?(套接字与 http)
- javascript - 如何修复 npm run dev 给出的错误?