读取XML,节点数不同

问题描述 投票:0回答:1

[当我在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 vb.net asmx
1个回答
0
投票

使用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();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.