2009-03-09 2 views
2

Я хотел бы поместить условие if в sub, которое сообщит ему, что он будет запущен, когда xml node STORE с атрибутом TEST = "test.doc" не существует. Любые предложения были бы замечательными. Я новичок в vb.Как определить, имеет ли XmlNode определенный атрибут?

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> 
+0

Когда "что" атрибут XML не существует? Город? Это элемент, это совсем другое дело. –

+0

Извините, у меня был атрибут в <>, поэтому он был заблокирован. –

+0

Наверное, стоит опубликовать немного XML, чтобы увидеть –

ответ

6

Попробуйте что-то вроде этого:

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

Спасибо! Ваше заявление действительно помогло мне. –

6

Если предположить, что Расположение является узлом вы хотите, чтобы проверить, если ваш атрибут существует:

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

Edit: Мое сообщение пытается ответить на исходный вопрос, заданный @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.doc» следующим образом:

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

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

Смежные вопросы