47 Stimmen

Prüfen, ob XML-Element existiert

Wie kann man überprüfen, ob ein bestimmtes Element in einer XML-Datei vorhanden ist? Angenommen, ich habe eine sich ständig ändernde XML-Datei und muss vor dem Lesen/Parsen überprüfen, ob jedes Element vorhanden ist.

0voto

Jiving Rockabilly Punkte 167

Ich bin gerade auf das gleiche Problem gestoßen und die Nullkoalitionsoperator con SelectSingleNode hat gut funktioniert, indem null mit string.Empty zugewiesen wurde

 foreach (XmlNode txElement in txElements)
 {
     var txStatus = txElement.SelectSingleNode(".//ns:TxSts", nsmgr).InnerText ?? string.Empty;
     var endToEndId = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty;
     var paymentAmount = txElement.SelectSingleNode(".//ns:InstdAmt", nsmgr).InnerText ?? string.Empty;
     var paymentAmountCcy = txElement.SelectSingleNode(".//ns:InstdAmt", nsmgr).Attributes["Ccy"].Value ?? string.Empty;
     var clientId = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty;
     var bankSortCode = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty; 

     //TODO finish Object creation and Upsert DB
  }

0voto

fredm73 Punkte 197
 string name = "some node name";
    var xDoc = XDocument.Load("yourFile");
    var docRoot = xDoc.Element("your docs root name");

     var aNode = docRoot.Elements().Where(x => x.Name == name).FirstOrDefault();
                if (aNode == null)
                {
                    return $"file has no {name}";
                }

-2voto

Mir Saleem Punkte 1

//Ich finde den Kindknoten ERNO an 2. und letzter Stelle

If StrComp(xmlnode(i).ChildNodes.Item(xmlnode(i).ChildNodes.Count - 1).Name.ToString(), "ERNO", CompareMethod.Text) = 0 Then
                xmlnode(i).ChildNodes.Item(xmlnode(i).ChildNodes.Count - 1).InnerText = c
            Else
                elem = xmldoc.CreateElement("ERNo")
                elem.InnerText = c.ToString
                root.ChildNodes(i).AppendChild(elem)
            End If

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X