我不打算重新发明轮子。我从一个总是有XML头的服务中获取值。实际的XML层次结构是未知的。每次通话都可能不同。我希望能够读取实际数据(忽略标题)并使其能够使用C#中提供的某种查询语言(linq,XMLDoc,???)
因此,给定字符串 myXML 可能包含以下(或其他)XML文档,我将如何搜索 cycleEndTime
的存在<?xml version="1.0" encoding="UTF-8"?>
<SubscriptionResponse>
<SID>uuid:41</SID>
<duration>0</duration>
</SubscriptionResponse>
或者我可能会得到这样的东西:
<?xml version="1.0"?>
<Event seqnum="162" sid="uuid:43">
<control>_22</control>
<action>1</action>
<node></node>
<eventInfo>
<totalCostToday>0.000000</totalCostToday>
<totalCostPeriod>0.000000</totalCostPeriod>
<totalUsagePeriod>0.000000</totalUsagePeriod>
<cycleEndTime>2017/01/15 14:30:30</cycleEndTime>
</eventInfo>
</Event>
答案 0 :(得分:1)
将其加载为XmlDocument
并查找特定节点:
var xDoc = new XmlDocument();
xDoc.LoadXml(text);
var result = xDoc.GetElementsByTagName("cycleEndTime");
if (result.Count == 1)
{
var time = result.Item(0).FirstChild.InnerText;
}
如果你的第二个xml你会找到一个,对于第一个xml,count将是0。
与System.Xml.Linq.XDocument
相同的事情:
var xDoc = XDocument.Parse(text);
var result = xDoc.Descendants("cycleEndTime").FirstOrDefault();
if (result != null)
{
var time = result.Value;
}