我会添加到以下主题,但这将违反论坛规则“但请避免寻求帮助”。 how to identify for the xml end tag while parsing using DOM?
上面的帖子中的问题也是我的。另一种方法是知道如何捕获“GroupName”以及该组内的每一个都绕过<历史> < /历史与GT;
我正在使用Excel 2016 VBA。 KeePass XML没有已知的架构。
下面列出了一个由KeePass XML文件的高级元素组成的简单节点树,以提供一些清晰度。为简单起见,忽略了条目细节(子节点)和大多数节点。
<KeePassFile>
<Root>
<Group>
<Group>
<Name>GroupName</Name>
<Entry>
<History>
<Entry>
</Entry>
<Entry>
</Entry>
</History>
</Entry>
<Entry>
</Entry>
</Group>
</Group>
<DeletedObjects />
</Root>
</KeePassFile>
我尝试的原因是使用Excel VBA和XML DOM库将KeePass XML文件加载到Excel中。似乎没有架构,并且各种“级别”使用相同的节点E.G.我尝试使用XPath但无处可去。 getElementsByTagName看起来很有前途,甚至可以用于两个元素,但是当完成第二个条目时,parent.nextsibliing就陷入了困境。
由于&lt;之间没有任何信息。历史和GT;&LT; /历史与GT;希望我可以确定下一个兄弟和父母的下一个兄弟,并使用所达到的两个节点中的第一个来“确定”结束。
我还可以假设紧跟着&lt; /条目&GT;已知并使用它们。我知道&lt;输入&gt;,&lt;历史&gt;,和&lt; DeletedObjects&GT;但是,其他人可能存在。
答案 0 :(得分:0)
DOM是数据的树级视图。此树中的元素节点对应于开始标记/结束标记对,节点的子节点表示在开始标记和结束标记之间找到的所有内容。因此,在DOM(或其他更现代的树模型)中没有单独的开始标记和结束标记的表示:两个标记被折叠成单个节点对象。 (这可能解释了为什么这么多人滥用“标签”这个词来表示“元素节点”)。
如果要忽略history元素,只需忽略元素节点,就不必担心开始和结束标记。