XMLparsing器不知道空白的长度

我有以下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 

这是我的XMLparsing器代码。

 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子节点文本没有空格值,代码很好,并显示输出。 我的代码条件是通过使用“If xmlNode.HasChildNodes Then”条件来检查XML元素标记是否有值。
对于空白大小写,xmlNode对象没有childnode和长度。
所以我不能检查条件,也不能写空白元素标签值,他们的编码会跳到下一个XML元素标签。

我非常感谢任何帮助和build议。

加成:
这个“如果xmlNode.HasChildNodes Then”的条件是检查xmlNode childnode的长度。
例如。
if childnode length > 0 return true, if not return false.
作为我的空白的情况下,条件将始终返回false,因为对于空白值,childnode长度为0。

您的XMLparsing器忽略空白节点。 尝试在加载XML之前更改DOMDocument.preserveWhiteSpace属性。

 Dim xmlDoc As MSXML2.DOMDocument Set xmlDoc = New MSXML2.DOMDocument xmlDoc.preserveWhiteSpace = true xmlDoc.LoadXML aboveXMLStringVale 

提示:您正在使用XMLparsing器来parsingSOAP。 你没有SOAPparsing器/库可用?