5 Stimmen

Wie kann ich feststellen, ob ein XmlNode ein bestimmtes Attribut hat?

Ich möchte eine Wenn-Bedingung in das Unterprogramm einfügen, die besagt, dass es ausgeführt werden soll, wenn der Xml-Knoten STORE mit dem Attribut TEST="test.doc" nicht existiert. Jeder Vorschlag wäre großartig. Ich bin neu in vb.

Sub InsertNode(ByVal doc As XmlDocument)   
    Dim City As XmlNode = doc.DocumentElement

    Dim Location As XmlElement = doc.CreateElement("store")
    Location.SetAttribute("test", "test.doc")

    Dim books As XmlElement = doc.CreateElement("books")
    books.InnerXml = "New Words"
    Location.AppendChild(books)

    City.AppendChild(store)
End Sub 'InsertNode

Beispiel für die XML-Datei

<city>
    <store test="test.doc">
        <books>
        "New Words" 
        </books>
    </store>
</city>

0 Stimmen

Wenn das Xml-Attribut "what" nicht existiert? Stadt? Das ist ein Element, was etwas anderes ist.

0 Stimmen

Entschuldigung, ich hatte das Attribut in <>, so dass es blockiert wurde.

0 Stimmen

Wahrscheinlich sollte man ein wenig XML posten, um zu sehen

8voto

ybo Punkte 16629

Versuchen Sie so etwas:

If Not doc.SelectSingleNode("//store[@test='test.doc']") Is Nothing Then
    Exit Sub
End If

0 Stimmen

Danke! Ihr Statement hat mir wirklich geholfen.

7voto

Gavin Miller Punkte 41976

Unter der Annahme, dass Standort ist der Knoten, den Sie auf das Vorhandensein Ihres Attributs prüfen wollen:

If Location.Attributes.ItemOf("test") Is Nothing Then
    'Attribute doesnt exist
Else
    'Attribute does exist
End If

2voto

Cerebrus Punkte 25410

Editar: Mit meinem Beitrag versuche ich, die ursprüngliche Frage von @Judy zu beantworten. Er geht nicht direkt auf die stark veränderte Version der Frage (und des Titels) ein, die derzeit existiert.


Sie können prüfen, ob ein Element "Store" auf folgende Weise existiert:

Dim storeNode as XmlNode = doc.SelectSingleNode("Store")
If storeNode isnot Nothing Then
  'The "Store" node was found.
Else
  'The "Store" node was not found.
End If

Folglich können Sie auf folgende Weise prüfen, ob das Attribut test in der StoreNode vorhanden ist:

Dim testAttribute as XmlAttribute = CType(storeNode.Attributes.GetNamedItem("Test"),  XmlAttribute)

If testAttribute isnot nothing then
  'The "Test" attribute was found.
Else
  'The "Test" attribute was found.
End If

Und schließlich können Sie auf folgende Weise überprüfen, ob das Attribut "Test" den Wert "test.doc" enthält:

If testAttribute.Value = "test.doc" Then
  'The value matches.
End If

Ich bin sicher, dass Sie diese drei Prüfungen in einem einzigen Block zusammenfassen können. Mit dieser offensichtlich ausführlichen Erklärung möchte ich das Konzept verdeutlichen.

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