Как определить, имеет ли XmlNode определенный атрибут? - PullRequest
3 голосов
/ 09 марта 2009

Я хотел бы поместить условие if в подпрограмму, которая будет указывать, что он запускается, когда xml-узел STORE с атрибутом TEST = "test.doc" не существует. Любые предложения будут великолепны. Я новичок в 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

<ч /> Образец файла XML

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

Ответы [ 3 ]

7 голосов
/ 09 марта 2009

Предполагая, что Местоположение - это узел, который вы хотите проверить, чтобы увидеть, существует ли ваш атрибут:

If Location.Attributes.ItemOf("test") Is Nothing Then
    'Attribute doesnt exist
Else
    'Attribute does exist
End If
6 голосов
/ 09 марта 2009

Попробуйте что-то подобное:

If Not doc.SelectSingleNode("//store[@test='test.doc']") Is Nothing Then
    Exit Sub
End If
1 голос
/ 09 марта 2009

Редактировать: Мой пост пытается ответить на оригинальный вопрос, заданный @Judy. Он не имеет прямого отношения к сильно измененной версии вопроса (и названию), которая существует в настоящее время.


Вы можете проверить, существует ли элемент «Магазин» следующим образом:

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

Следовательно, вы можете проверить, существует ли проверка атрибута в StoreNode следующим образом:

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

И, наконец, вы можете проверить, содержит ли атрибут «Test» значение «test.doc» следующим образом:

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

Я уверен, что теперь вы можете объединить эти три проверки в один блок. Моя цель в этом явно многословном объяснении состоит в том, чтобы прояснить эту концепцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...