如何在vb.net中检查xml文件中是否存在值

时间:2012-07-24 14:57:07

标签: xml vb.net .net-2.0

我正在尝试检查xml文件中是否存在字符串。如果它不存在,我必须将该字符串添加到xml文件。

我的xml文件如下所示:

  <Employee>
      <Emp>
        <Name id="1">   A     </Name>
        <Name id="2">   C     </Name>
        <Name id="3">   D     </Name>
       </Emp>
  </Employee>

我想实现:

dim str as string = "b" 
if str exists in "xmlfile"
    'do something
else
    'add string to file
end if

我根本不熟悉LINQ,但我明白我想用LINQ做的事情是可行的。我尝试过以下方法:

Dim employee = XElement.Load(someStream)
Dim emp = employee.Element("Emp")
If emp IsNot Nothing Then
    else
        'add string to xml file
End If

当我尝试这个时,我收到了错误:XElement未被声明。

任何人都可以建议在没有LINQ的情况下在VB.NET中做我想做的事情吗?或者如果我必须使用LINQ,可以提供一些示例吗?

我正在使用.net 2.0(VB.NET)

2 个答案:

答案 0 :(得分:0)

你需要遍历Emp的孩子。现在,您的代码只是检查<Emp>元素是否存在。我假设你真正想做的是检查每个<Name>元素,看看它的内部文本是否包含你想要的字符串。

你也可以尝试使用XmlDocument和XmlNode,如果XElement给你带来麻烦,它应该在.NET 2.0中可用。

答案 1 :(得分:0)

我认为你想要的更像是这样:

Dim employeeData As XDocument
Dim employeeElements as List(Of XElement)
Dim numberOfNames as Integer = 0

employeeData = XDocument.Load(someStream)

employeeElements = (From elements In employeeData.Decendants()
                    Where (elements.Name.LocalName.ToString() = "Emp")
                    Select elements).ToList()

For Each employee In employeeElements
    If (employee.<Name>.Value = "B") Then
        numberOfNames = numberOfNames + 1
    End If
Next

If numberOfNames > 0 Then
    'Insert "B" into xml
End If

这是一个使用XDocument并进行交互的示例,尽管user1512185建议使用示例LINQ表达式来获取要迭代的XElements列表。

这是我在其中一个应用中执行的操作的修改。但是我没有插入xml,所以我不确定我能帮助你。