Bon, j'ai pu avancer, j'arrive bien à remplacer chaque contenu de balise par son contenu dans un CDATA.
En revanche, il me reste un bug que je n'arrive pas à corriger, juste après le dernier childnode, j'ai la concatenation des contenus de chaque childnode.
Une partie du XML en sortie :
Code :
- <plate>
- <tb_name><![CDATA[{0010A20F-0000-0000-EE01-4D7C9D551E04}-PLATE]]></tb_name>
- <geometry>
- <project><![CDATA[DCM]]></project>
- <name><![CDATA[name]]></name>
- <date><![CDATA[DOCUMENT_VERSION]]></date>
- <view><![CDATA[?VIEW?]]></view>
- <file><![CDATA[?FILE?]]></file>
- <![CDATA[nameDOCUMENT_VERSION?VIEW??FILE?]]> </geometry>
- <feasibility><![CDATA[]]></feasibility>
- </plate>
|
Le XML que je voudrais :
Code :
- <plate>
- <tb_name><![CDATA[{0010A20F-0000-0000-EE01-4D7C9D551E04}-PLATE]]></tb_name>
- <geometry>
- <project><![CDATA[DCM]]></project>
- <name><![CDATA[name]]></name>
- <date><![CDATA[DOCUMENT_VERSION]]></date>
- <view><![CDATA[?VIEW?]]></view>
- <file><![CDATA[?FILE?]]></file>
- </geometry>
- <feasibility><![CDATA[]]></feasibility>
- </plate>
|
La fonction récursive de traitement à laquelle je passe le XMLDOMElement <plate> :
Code :
- Private Sub ConvertIntoCDATA(ByVal oDoc As IXMLDOMDocument, ByVal oNode As IXMLDOMNode)
- Dim oNodeParent As IXMLDOMElement
- Dim oNodeCreated As IXMLDOMElement
-
- Dim oNodeCreatedCDATA As IXMLDOMCDATASection
-
- Dim oChild As IXMLDOMNode
- Dim sChild As IXMLDOMNode
- Dim child As IXMLDOMNode
- Dim text_only As Boolean
- ' Do nothing if this is a text node.
- If TypeOf oNode Is IXMLDOMText Then Exit Sub
-
- ' See if this node contains only text.
- text_only = True
- If oNode.hasChildNodes Then
- For Each child In oNode.childNodes
- If Not (TypeOf child Is IXMLDOMText) Then
- text_only = False
- Exit For
- End If
- Next child
- End If
- ' Process child nodes.
- If oNode.hasChildNodes Then
- Set oNodeParent = oNode.parentNode
- Set oNodeCreated = oDoc.createElement(oNode.baseName)
- Set oNodeCreatedCDATA = oDoc.createCDATASection(oNode.Text)
- For Each oChild In oNode.childNodes
- If text_only = True Then
- If oNode.lastChild.baseName = oChild.baseName Then
- Call oNode.removeChild(oChild)
- End If
- End If
- ConvertIntoCDATA oDoc, oChild
- Next
-
- Call oNode.appendChild(oNodeCreatedCDATA)
- End If
- End Sub
|
Je n'arrive pas à faire disparaître cette concatenation
Message édité par Topher85 le 30-10-2015 à 17:03:54
---------------
Pseudo LoL : TheLittleTopher.