[当我在VB.NET(ASMX webservice)中读取XML文件时,有时可能缺少某些节点。我的代码如下:
nodetype = node("type").InnerText
nodetime = node("time").InnerText
nodefileName = node("fileName").InnerText
而且我已经考虑过这种情况,以查看该节点是否存在。如果不存在,则返回带有0的字符串。
If node("fileName")Is Nothing Then
nodefileName = "0"
Else
nodefileName = nodefileName = node("fileName").InnerText.
End If
而不是必须单独检查所有节点...如何一次性检查所有节点,如果XML文件中不存在该检查,则将0放入相应的变量中?谢谢1000!
编辑:XML示例,XML并不总是具有所有节点。
<?xml version="1.0" encoding="UTF-8"?>
<eventLog>
<event>
<type>access1</type>
<fileName>file.xml</fileName>
<time>2020-04-25</time>
<baseExtraData>
<sample>Bone</sample>
<age>65</age>
</baseExtraData>
</event>
<event>
<type>access2</type>
<fileName>file2.xml</fileName>
<time>2020-04-24</time>
<baseExtraData>
<sample>Malow</sample>
<age>11</age>
</baseExtraData>
</event>
</eventLog>
使用Xml Linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var events = doc.Descendants("event").Select(x => new {
type = (string)x.Element("type"),
filename = (string)x.Element("fileName"),
time = (DateTime)x.Element("time")
}).ToList();
}
}
}