Announcement

Collapse
No announcement yet.

Microsoft.XMLDOM

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Microsoft.XMLDOM

    Hallo,

    ich arbeite gerade an einer XML Schnittstelle..

    doc := CreateOleObjec('Microsoft.XMLDOM') as IXMLDomDocument;

    xml := 'Datenstrom';
    root := doc.createElement(xml);
    doc.appendchild(root);

    u.s.w.

    laeuft auch einwandfrei, nur hat die
    ausgegebene XML File kein CarriageReturn

    kann ich dies irgednwie aktivieren, damit die
    XML File auch in einem Editor uebersichtlich ausschaut!?

    Im IE wird die XML File wunderbar angezeigt

    THANKS
    Karl

  • #2
    Hi Karl,

    hab gerade das gleiche Problem, nur dass ich z. Zt. mit VB arbeiten muss. Die Funktionaliät zur Reformatierung des XML Textes ist standardmäßig nicht vorhanden. D. h. man muss ich eine eigene Routine schreiben, die den teilweise einzeiligen Text umbricht. Nachfolgend etwas VB-Code, den ich zu dem Thema im Internet gefunden habe (Ist nur Basic, kann man glaube ich ganz gut verstehen und übersetzen).

    Grüsse
    Marc

    '----------------------------------------------------------------------------------------
    ' Helper function to format XML-Output
    '----------------------------------------------------------------------------------------
    ' Add formatting to this element. Indent it and add a
    ' carriage return before its children. Then recursively
    ' format the children with increased indentation.
    Private Sub FormatXmlNode(ByVal node As IXMLDOMNode, ByVal indent As Integer)

    Dim child As IXMLDOMNode
    Dim text_only As Boolean

    ' Do nothing if this is a text node.
    If TypeOf node Is IXMLDOMText Then Exit Sub

    ' See if this node contains only text.
    text_only = True
    If node.hasChildNodes Then
    For Each child In node.childNodes
    If Not (TypeOf child Is IXMLDOMText) Then
    text_only = False
    Exit For
    End If
    Next child
    End If

    ' Process child nodes.
    If node.hasChildNodes Then
    ' Add a carriage return before the children.
    If Not text_only Then
    node.insertBefore _
    node.ownerDocument.createTextNode(vbCrLf), _
    node.firstChild
    End If

    ' Format the children.
    For Each child In node.childNodes
    FormatXmlNode child, indent + 2
    Next child
    End If

    ' Format this element.
    If indent > 0 Then
    ' Indent before this element.
    node.parentNode.insertBefore _
    node.ownerDocument.createTextNode(Space$(indent)), _
    node

    ' Indent after the last child node.
    If Not text_only Then
    node.AppendChild node.ownerDocument.createTextNode(Space$(indent))

    ' Add a carriage return after this node.
    If node.nextSibling Is Nothing Then
    node.parentNode.AppendChild _
    node.ownerDocument.createTextNode(vbCrLf)
    Else
    node.parentNode.insertBefore _
    node.ownerDocument.createTextNode(vbCrLf), _
    node.nextSibling
    End If

    End If

    End If

    End Sub
    '---------------------------------------------------------------------------------------

    Comment


    • #3
      Hi Karl,

      hab gerade das gleiche Problem, nur dass ich z. Zt. mit VB arbeiten muss. Die Funktionaliät zur Reformatierung des XML Textes ist standardmäßig nicht vorhanden. D. h. man muss ich eine eigene Routine schreiben, die den teilweise einzeiligen Text umbricht. Nachfolgend etwas VB-Code, den ich zu dem Thema im Internet gefunden habe (Ist nur Basic, kann man glaube ich ganz gut verstehen und übersetzen).

      Grüsse
      Marc

      <PRE>
      '----------------------------------------------------------------------------------------
      ' Helper function to format XML-Output
      '----------------------------------------------------------------------------------------
      ' Add formatting to this element. Indent it and add a
      ' carriage return before its children. Then recursively
      ' format the children with increased indentation.

      Private Sub FormatXmlNode(ByVal node As IXMLDOMNode, ByVal indent As Integer)


      Dim child As IXMLDOMNode
      Dim text_only As Boolean

      ' Do nothing if this is a text node.
      If TypeOf node Is IXMLDOMText Then Exit Sub

      ' See if this node contains only text.
      text_only = True
      If node.hasChildNodes Then
      For Each child In node.childNodes
      If Not (TypeOf child Is IXMLDOMText) Then
      text_only = False
      Exit For
      End If
      Next child
      End If

      ' Process child nodes.
      If node.hasChildNodes Then
      ' Add a carriage return before the children.
      If Not text_only Then
      node.insertBefore _
      ode.ownerDocument.createTextNode(vbCrLf), _
      node.firstChild
      End If

      ' Format the children.
      For Each child In node.childNodes
      FormatXmlNode child, indent + 2
      Next child
      End If

      ' Format this element.
      If indent > 0 Then
      ' Indent before this element.
      node.parentNode.insertBefore _
      node.ownerDocument.createTextNode(Space$(indent)), _
      node

      ' Indent after the last child node.
      If Not text_only Then
      node.AppendChild node.ownerDocument.createTextNode(Space$(indent))

      ' Add a carriage return after this node.
      If node.nextSibling Is Nothing Then
      node.parentNode.AppendChild _
      node.ownerDocument.createTextNode(vbCrLf)
      Else
      node.parentNode.insertBefore _
      node.ownerDocument.createTextNode(vbCrLf), _
      node.nextSibling
      End If

      End If

      End If

      End Sub
      '----------------------------------------------------------------------------------------
      </PRE&gt

      Comment

      Working...
      X