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.

71voto

Chris James Punkte 11229
if(doc.SelectSingleNode("//mynode")==null)....

Sollte genügen (wobei doc natürlich Ihr XmlDocument-Objekt ist)

Alternativ können Sie auch eine XSD verwenden und anhand dieser validieren

6voto

user4258853 Punkte 51

//wenn das Problem "nur" darin besteht, zu überprüfen, ob das Element in der Xml-Datei vorhanden ist, bevor Sie //den Wert zu extrahieren, könnten Sie wie folgt vorgehen

XmlNodeList YOURTEMPVARIABLE = doc.GetElementsByTagName("YOUR_ELEMENTNAME");

        if (YOURTEMPVARIABLE.Count > 0 )
        {
            doctype = YOURTEMPVARIABLE[0].InnerXml;

        }
        else
        {
            doctype = "";
        }

6voto

sangam Punkte 1444

Sie können jeden einzelnen Knoten durchlaufen und prüfen, ob ein Knoten existiert.

doc.Load(xmlPath);
        XmlNodeList node = doc.SelectNodes("//Nodes/Node");
        foreach (XmlNode chNode in node)
        {
            try{
            if (chNode["innerNode"]==null)
                return true; //node exists
            //if ... check for any other nodes you need to
            }catch(Exception e){return false; //some node doesn't exists.}
        }

Sie durchlaufen alle Knotenelemente unter Nodes (sagen wir, dies ist Root) und überprüfen Sie, ob Knoten mit dem Namen 'innerNode' (fügen Sie andere, wenn Sie benötigen) vorhanden ist. try..catch ist, weil ich vermute, dass dies populäre 'object reference not set' Fehler auslösen wird, wenn der Knoten nicht existiert.

4voto

paul Punkte 13038

Ich bin mir nicht sicher, was Sie vorhaben, aber die Verwendung einer DTD oder eines Schemas könnte alles sein, was Sie brauchen, um validieren die xml.

Andernfalls, wenn Sie finden. eines Elements können Sie eine xpath-Abfrage verwenden, um nach einem bestimmten Element zu suchen.

4voto

jomsk1e Punkte 3514

Wie wäre es mit einem Versuch?

using (XmlTextReader reader = new XmlTextReader(xmlPath))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        { 
            //do your code here
        }
    }
}

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