在 C# InnerText 中加载 XML

本文关键字:加载 XML InnerText | 更新日期: 2023-09-27 18:35:59

我有一个 C# 服务,我每 1 秒循环一次,通过一个目录查找 XML 文件。

这些 XML 文件可能如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<job>
<type>freelance</type>
<text>blah</text>
</job>

在 foreach 中,我执行以下操作:

var doc = new XmlDocument();
doc.LoadXml(xmlFile);
XmlNode xmltype = doc.DocumentElement.SelectSingleNode("/job/type");

但是,我想在我的程序中使用这些字符串。使用 xmltype.InnerText 不起作用。MSDN上的文档没有为我提供任何新内容,我想知道我做错了什么。

在 C# InnerText 中加载 XML

首先,您必须检查 xml 文件,是否有任何数据。之后,对一个特定的节点进行innerText检查。例如

这是文本

XmlNode xmlType = doc.DocumentElement.SelectSingleNode("/job/type");
xmlType.innerText = "This is the Text";
xmlType.Value = "Stack";

以下控制台程序将输出"自由职业者"。我认为问题可能出在您的某些 XML 上 - 您的所有 XML 文档都遵循相同的架构吗?我猜代码在某些时候因NullReferenceException而失败。我添加了一个空检查来防止这种可能的情况。

为了帮助调试服务,我倾向于使用此处描述的技术将应用程序作为控制台应用程序(以便于调试)或 Windows 服务运行。

using System;
using System.Xml;
public class Program
{
    static string xmlFile = @"<?xml version=""1.0"" encoding=""UTF-8""?>
        <job>
        <type>freelance</type>
        <text>blah</text>
        </job>";
    public static void Main()
    {
        var doc = new XmlDocument();
        doc.LoadXml(xmlFile);
        XmlNode xmltype = doc.DocumentElement.SelectSingleNode("/job/type");
        if(xmltype==null)
        {
           Console.WriteLine("/job/type not found");
        } else {
           Console.WriteLine(xmltype.InnerText);
        }
    }
}

试试这个:

string str = xmltype.Value;