XML 解析器不知道空格长度

XML parser don't know whitespace length

我有以下 XML 示例。

    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:f="http://kbcfp.com/BoTech/Inferno/Fault"
    xmlns:base="http://kbcfp.com/BoTech/Inferno/Base" xmlns:h="http://kbcfp.com/BoTech/Inferno/Header" xmlns:ep="http://torstonetech.com/Inferno/FDE">
    <SOAP-ENV:Header>
    <h:optLockSeqNumbers>
    <h:values><h:editSequenceNumber>1</h:editSequenceNumber><h:modifiedDateTime>2015-01-21T15:33:10+06:30</h:modifiedDateTime><h:modifiedUserId>1005</h:modifiedUserId><h:objectId>100100049</h:objectId><h:optimisticLockObjTypeId>11</h:optimisticLockObjTypeId></h:values>
    </h:optLockSeqNumbers>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
    <ep:AccountAttrs><ep:accountId>100100049</ep:accountId><ep:attrId>100001896</ep:attrId>
    <ep:AccountAttrs><ep:accountId> </ep:accountId><ep:attrId>100001896</ep:attrId></ep:AccountAttrs>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

我必须阅读此 XML 和预期输出如下。

1st  ep:accountId 100100049
     ep:attrId 100001896
2nd  ep:accountId  <!-- want to write 1 space in these place -->
     ep:attrId 100001896

这是我的 XML 解析器代码。

Dim xmlDoc As MSXML2.DOMDocument
Set xmlDoc = New MSXML2.DOMDocument
xmlDoc.LoadXML aboveXMLStringVale
Call readNode(xmlDoc.ChildNodes)

public Function readNode(ByRef nodes AS MSXML2.IXMLDOMNodeList)
Dim xmlNode As MSXML2.IXMLDOMNode
For Each xml Node In nodes
  If xmlNode.nodeType = NODE_TEXT Then
    ThisWorkbook.Worksheets("xxx").Cell(row,column) = xmlNode.ParentNode.ParentNode.nodeName
    ThisWorkbook.Worksheets("xxx").Cell(row,column) = xmlNode.ParentNode.nodeName
    ThisWorkbook.Worksheets("xxx").Cell(row,column) = "'" & xmlNode.NodeValue
  End If

  If xmlNode.HasChildNodes Then 
   Call readNode(xmlNode.ChildNodes)
  End If
Next
End Function

代码很好,如果 XML 子节点文本没有 space 值,则显示输出。 我的代码条件是通过使用检查 XML 元素标记是否具有值 "If xmlNode.HasChildNodes Then"条件。
对于白色space情况,没有子节点,也没有xmlNode对象的长度。
所以我可以't check the condition and can't write whitespace element tag value and them coding will 跳到下一个 XML 元素标签。

非常感谢您的帮助和建议。

加法:
这个"If xmlNode.HasChildNodes Then"条件是检查xmlNode子节点长度。
例如。
if childnode length > 0 return true, if not return false.
作为我的白色space情况,条件总是return假,因为白色space值的子节点长度为0。

您 XML 解析器忽略了空白节点。在加载 XML.

之前尝试更改 DOMDocument.preserveWhiteSpace 属性
Dim xmlDoc As MSXML2.DOMDocument
Set xmlDoc = New MSXML2.DOMDocument
xmlDoc.preserveWhiteSpace = true
xmlDoc.LoadXML aboveXMLStringVale

提示:您正在使用 XML 解析器来解析 SOAP。您没有可用的 SOAP parser/library 吗?