C# 从具有特定名称的子节点获取InnerXML/InnerText。最佳做法
我有一个看起来像这样的XML(缩写) 我的问题是,有没有一种方法可以减少这种错误的发生?例如(引用元素名称?):C# 从具有特定名称的子节点获取InnerXML/InnerText。最佳做法,c#,xml,serialization,xml-parsing,C#,Xml,Serialization,Xml Parsing,我有一个看起来像这样的XML(缩写) 我的问题是,有没有一种方法可以减少这种错误的发生?例如(引用元素名称?): 这种场景的最佳实践是什么?您可以使用带有适当XPath字符串的SelectSingleNode()作为参数,根据节点名称选择子节点,例如: LapDistance = ConvertToDouble(lap.SelectSingleNode("DistanceMeters").InnerXml) 如果不确定所有节点都有相应的子元素,则需要进行空检查 有没有不使用XmlSeriali
这种场景的最佳实践是什么?您可以使用带有适当XPath字符串的
SelectSingleNode()
作为参数,根据节点名称选择子节点,例如:
LapDistance = ConvertToDouble(lap.SelectSingleNode("DistanceMeters").InnerXml)
如果不确定所有
节点都有相应的子元素,则需要进行空检查 有没有不使用XmlSerialization或LINQ to XML的理由?
XmlNodeList lapList = doc.GetElementsByTagName("Lap");
activity = new Activity();
foreach (XmlNode lap in lapList)
{
var split = new Lap
{
StartTime = DateTime.Parse(lap.Attributes[0].Value),
LapDistance = ConvertToDouble(lap.ChildNodes.Item(1).InnerXml),
LapMaximunSpeed = ConvertToDouble(lap.ChildNodes.Item(2).InnerXml),
LapCalories = ConvertToInt(lap.ChildNodes.Item(3).InnerXml),
LapAverageHeartRate = ConvertToInt(lap.ChildNodes.Item(4).InnerText),
LapMaximumHeartRate = ConvertToInt(lap.ChildNodes.Item(5).InnerText),
};
LapDistance = ConvertToDouble(lap.ChildNodes.Item["DistanceMeters"].InnerXml),
LapDistance = ConvertToDouble(lap.SelectSingleNode("DistanceMeters").InnerXml)