xml - 在 Visual Basic 中将数据添加到 XML 文件的节点

标签 xml vb.net

我是 Visual Basic 的新手,所以我想从一开始就原谅自己。

下面的代码应该得到一个节点列表,其中包含所有节点,其中 NameInnerText 等于名为 membername 的字符串。这部分似乎工作完美,但之后我还想检查此列表中是否已存在节点 Logout 。这样我想防止复制 xml 数据库中的数据。不幸的是,它没有像我尝试的那样工作。它不断复制所有数据。那么我的错误是什么??

XML 文件

<?xml version="1.0" encoding="utf-16"?>
<Times>
  <Shift>
    <Name>Philipp</Name>
    <Login>14:11</Login>
    <Date>25.03.2013</Date>
    <Logout>14:11</Logout> ' Don't generate again ....
  </Shift>
  <Shift>
    <Name>Philipp</Name>
    <Login>14:11</Login>
    <Date>25.03.2013</Date>
    <Logout>14:11</Logout> ' Generate Logout node
  </Shift>
</Times>

视觉基本代码

   If File.Exists(Filename) Then

        DOMDocument.Load(Filename)

        Dim RootElement As XmlElement = DOMDocument.DocumentElement
        Dim ListOfTitles As XmlNodeList = DOMDocument.GetElementsByTagName("Name")

        For Each Node As XmlNode In ListOfTitles

            If Node.InnerText = memberName Then

                Dim logout = Node.SelectNodes("Logout")

                If Not logout Is Nothing Then

                    Dim NewElement As XmlElement = DOMDocument.CreateElement("Logout")
                    NewElement.InnerText = DateTime.Now.ToShortTimeString()

                    Dim Parent As XmlNode = Node.ParentNode
                    Parent.AppendChild(NewElement)

                    DOMDocument.Save(Filename)

                End If

            End If

        Next
    End If

最佳答案

logout 被设置为空对象,因此 If Not logout is Nothing Then 等同于 If True Then。请参阅:http://msdn.microsoft.com/en-us/library/hcebdtae.aspx . IXMLElement.selectNodes(expression) 方法总是返回一个对象。要修复,请改为检查注销的长度值。

If logout.Count > 0 Then 或使用 selectSingleNode 如果没有找到节点则返回 NULL

关于xml - 在 Visual Basic 中将数据添加到 XML 文件的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616421/

相关文章:

.net - VB.NET 2K8 : How to make all imports visible within a class?

.net - 如何连接 ArrayList 的元素将其转换为字符串表示形式?

xml - 如何在 xpath 表达式上执行 "OR"而无需使用 "|"连接两个 xpath 或使用 xpath 函数?

android - 如果我的 Android 项目只有 v21 布局,它会支持旧设备吗?

asp.net - Gridview 中的 DropDownList SelectedIndexChanged 未触发!

json - 如何在 VB.NET 中使用授权 token 和 JSON 参数进行 HTML 发布

c# - 如何避免在变量赋值的情况下调用冗余?

java - 正如我可以在一个类中关联两个不同的文件与 jaxb

java - 在 Java 中从给定的 XML 创建 OpenSAML 断言

java - Android - 更改所有 Android 版本的应用程序语言