【发布时间】:2013-03-25 13:41:05
【问题描述】:
我是 Visual Basic 的新手,所以我想从一开始就原谅自己。
下面的代码应该得到一个节点列表,其中包含Name 的InnerText 等于名为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
【问题讨论】:
-
我将您的标签从“vb6”更改为“vb.net”。
-
我 +1 了 GojiraDeMonstah 的回答。如果还不算太晚,如果您的代码少于 1000 行,请尽可能快地运行此 XML 运行、RUN、RUNNNN,而不要直接操作 XML 并使用对象运行 TO。我无法强调能够以 1/3 的错误速度以 3 倍的速度编写代码将是多么美妙。我只能说,相信我,你会喜欢的。
-
我错了吗,或者
InnerText应该只是Text