【问题标题】:How can an XML node be its own child node?XML 节点如何成为它自己的子节点?
【发布时间】:2014-07-31 01:57:16
【问题描述】:

我的 XML 文件具有以下结构,并且我在 VBA (Excel 2013) 中使用 MSXML2 v6.0 库。

<root>
    <products> 
        <product>relational database</product>
        <product>virtual machine</product>
    </products>
</root>

当我检查product 节点时,它说值是“关系数据库”(对于第一个节点),但它也将 childNode 列为“关系数据库”。这怎么可能?

我希望能够通过查看是否有更多子节点以编程方式确定我是否已经到达节点树的底部,但如果它总是自引用当前,这似乎是不可能的节点作为它自己的子节点(我注意到只有当节点中有文本时才会发生这种情况。如果它只有一个属性但没有文本,它会将 childNodes 显示为空)。

当节点有文本但没有实际的子元素时,为什么节点会将自己计为自己的子节点的任何想法,以及实际确定何时到达节点末尾的任何方法树?

【问题讨论】:

    标签: xml excel vba


    【解决方案1】:

    在 XML DOM 中,元素中包含的文本也是内部命名为 #text 的子节点

    原因是某些元素可以包含文本和其他元素的混合,例如:

    <p> Hello <strong>Wonderful</strong> World</p>
    

    在这种情况下,每个文本(HelloWorld)都会成为子节点 #text

    【讨论】:

    • 有什么办法只获取节点的文本,而不包含实际的子节点?
    • 要获取节点的文本,请使用 Text 属性。要仅获取与文本节点不同的子节点,请使用 selectNodes( '*' ),您将获得类似于 childNodes 的列表
    猜你喜欢
    • 2020-08-28
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多