Как установить атрибут для объекта XmlNode, который не установлен для экземпляра или объекта. C # - PullRequest
0 голосов
/ 17 сентября 2018

Я не могу понять, как установить значение по умолчанию XmlNode.

У меня есть XmlNode с именем RequirementMinTime, и я хочу установить для него значение "0", когда этот узел отсутствует в документе xml.Вот код, который я пытаюсь, который не работает.

        XmlReader reader = XmlReader.Create(xmlpath, settings);
        XmlDocument doc = new XmlDocument();

        doc.Load(reader);

       if (GlobalNode.SelectSingleNode("MinTimeMs") == null)
        {
            RequirementMinTime.Attributes["MinTimeMs"].Value = "0";
        }
        else
        {
            RequirementMinTime = GlobalNode.SelectSingleNode("MinTimeMs");
        }

Я получаю следующую ошибку в операторе if

"System.NullReferenceException: 'Ссылка на объект не установлена ​​для экземпляра объекта.'"

это объявление объекта:

    public static XmlNode RequirementMinTime
    {
        get;
        set;
    }

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

вот решение

    XmlReader reader = XmlReader.Create(xmlpath, settings);
    XmlDocument doc = new XmlDocument();

    doc.Load(reader);

   if (GlobalNode.SelectSingleNode("MinTimeMs") == null)
    {
        XmlNode newNode = doc.CreateNode(XmlNodeType.Element, "MinTimeMs", "");
        newNode.InnerText = "0";
        GlobalNode.AppendChild(newNode);    
        RequirementMinTime = GlobalNode.SelectSingleNode("MinTimeMs");
    }
    else
    {
        RequirementMinTime = GlobalNode.SelectSingleNode("MinTimeMs");
    }
0 голосов
/ 17 сентября 2018

Вам необходимо создать узел, иначе вы не сможете установить значение (при условии, что ваш XmlDocument назван xmlDoc:

if (GlobalNode.SelectSingleNode("MinTimeMs") == null)
{
    RequirementMinTime = xmlDoc.CreateElement("MinTimeMs");
    RequiredMinTime.Value = "0";
}
else
{
    RequirementMinTime = GlobalNode.SelectSingleNode("MinTimeMs");
}
...