Guten Abend zusammen,
vorweg muss ich sagen, dass ich mich mit XML nur sehr rudimentär auskenne und deswegen auch nicht verstehe warum eben genau das passiert, was ich nicht verstehe.
Ich habe ein AddIn für unsere CAD-Software in VB.NET geschrieben, welches unteranderem Stücklisten in ein XML-File exportiert.
Dies funktioniert soweit auch sehr gut, bis auf dass sich der Export der Informationen in das XML-File, bzw. die darin enthaltenen Knoten mir unerklärlich verhalten.
Bei meines Erachtens nach identischem Code erscheinen die Knoten mal so:
und mal so:
Die gesamte XML sieht so aus:
Spoiler anzeigen
Der VB.NET Code so (gekürzt):
Spoiler anzeigen
Die Werte der Knoten kommen aus dem Namespace der CAD-Software, sollten jedoch für mein Problem nicht weiter von Bedeutung sein.
Kann mir jemand erklären warum die Knoten mal schön sauber untereinander angeordnet werden und mal in Kurzform hintereinander?
vorweg muss ich sagen, dass ich mich mit XML nur sehr rudimentär auskenne und deswegen auch nicht verstehe warum eben genau das passiert, was ich nicht verstehe.
Ich habe ein AddIn für unsere CAD-Software in VB.NET geschrieben, welches unteranderem Stücklisten in ein XML-File exportiert.
Dies funktioniert soweit auch sehr gut, bis auf dass sich der Export der Informationen in das XML-File, bzw. die darin enthaltenen Knoten mir unerklärlich verhalten.
Bei meines Erachtens nach identischem Code erscheinen die Knoten mal so:
und mal so:
Die gesamte XML sieht so aus:
XML-Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <BillOfMaterial>
- <AssemblyInformation>
- <Commission>55555</Commission>
- <Project>BOM-Projekt</Project>
- <Customer>Test</Customer>
- <Description>Abstandhalter</Description>
- <DrawingNumber>55555-01-001</DrawingNumber>
- <RevisionNumber>0</RevisionNumber>
- <Author>MR</Author>
- <Date>09.12.2017</Date>
- </AssemblyInformation>
- <Components>
- <Component DocId="956977927">
- <ItemNumber />1<Quantity />1<Revision />0<PartNumber />55555-02-001<DescriptionDe />Scheibe<DescriptionEn />Plate<Dimensions />t10 Ø250<Material />S235JR<Standard />EN 10025-2<Certificate />3.1 ADW1<Weight />3,88<StockNumber /><DocId />956977927</Component>
- <Component DocId="887839426">
- <ItemNumber />2<Quantity />1<Revision />0<PartNumber />55555-02-002<DescriptionDe />Bolzen<DescriptionEn />Bolt<Dimensions />Ø30 - 150<Material />S235JR<Standard />EN 10060<Certificate />2.2<Weight />0,84<StockNumber /><DocId />887839426</Component>
- <Component DocId="861080793">
- <ItemNumber />3<Quantity />1<Revision />0<PartNumber />55555-02-003<DescriptionDe />Platte<DescriptionEn />Plate<Dimensions />t5 150x150<Material />1.4301<Standard />EN 10028-7<Certificate />3.2 ADW2<Weight />0,9<StockNumber /><DocId />861080793</Component>
- </Components>
- </BillOfMaterial>
Der VB.NET Code so (gekürzt):
VB.NET-Quellcode
- Imports Inventor
- Imports System.Windows.Forms
- Imports System.Xml
- Public Class frmBomExport
- Private Sub cmdExport_Click(sender As Object, e As EventArgs) Handles cmdExport.Click
- #Region "XML Assembly-Information"
- 'Create XML and write Assembly-Information to XML
- Dim xmlDoc As New XmlDocument
- Dim xmlDeclaration As XmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", Nothing)
- xmlDoc.InsertBefore(xmlDeclaration, xmlDoc.DocumentElement)
- Dim BOMNode As XmlElement = xmlDoc.CreateElement("BillOfMaterial")
- xmlDoc.AppendChild(BOMNode)
- Dim AssemblyNode As XmlElement = xmlDoc.CreateElement("AssemblyInformation")
- BOMNode.AppendChild(AssemblyNode)
- Dim ComponentsNode As XmlElement = xmlDoc.CreateElement("Components")
- BOMNode.AppendChild(ComponentsNode)
- Dim CommissionNode As XmlElement = xmlDoc.CreateElement("Commission")
- AssemblyNode.AppendChild(CommissionNode)
- Dim CommissionTextElement As XmlText = xmlDoc.CreateTextNode(CStr(cINI.INI_ReadValueFromFile("ProjectInfo", "Commission", "", strProjectINI)))
- CommissionNode.AppendChild(CommissionTextElement)
- Dim ProjectNode As XmlElement = xmlDoc.CreateElement("Project")
- AssemblyNode.AppendChild(ProjectNode)
- Dim ProjectTextElement As XmlText = xmlDoc.CreateTextNode(CStr(cINI.INI_ReadValueFromFile("ProjectInfo", "Project", "", strProjectINI)))
- ProjectNode.AppendChild(ProjectTextElement)
- Dim CustomerNode As XmlElement = xmlDoc.CreateElement("Customer")
- AssemblyNode.AppendChild(CustomerNode)
- Dim CustomerTextElement As XmlText = xmlDoc.CreateTextNode(CStr(cINI.INI_ReadValueFromFile("ProjectInfo", "Customer", "", strProjectINI)))
- CustomerNode.AppendChild(CustomerTextElement)
- #End Region
- #Region "BOM Components-Information"
- 'BOM-Export
- For i = 1 To oBomRows.Count
- Dim ComponentNode As XmlElement = xmlDoc.CreateElement("Component")
- Dim ComponentAttribute As XmlAttribute = xmlDoc.CreateAttribute("DocId")
- ComponentAttribute.Value = CStr(oCompDefUseProps.Item("Dok-ID").Value)
- ComponentsNode.AppendChild(ComponentNode)
- ComponentNode.Attributes.Append(ComponentAttribute)
- Dim ItemNumberNode As XmlElement = xmlDoc.CreateElement("ItemNumber")
- ComponentNode.AppendChild(ItemNumberNode)
- Dim ItemNumberTextElement As XmlText = xmlDoc.CreateTextNode(CStr(oBomRow.ItemNumber))
- ComponentNode.AppendChild(ItemNumberTextElement)
- Dim QuantityNode As XmlElement = xmlDoc.CreateElement("Quantity")
- ComponentNode.AppendChild(QuantityNode)
- Dim QuantityTextElement As XmlText = xmlDoc.CreateTextNode(CStr(oBomRow.ItemQuantity))
- ComponentNode.AppendChild(QuantityTextElement)
- Dim RevisionNode As XmlElement = xmlDoc.CreateElement("Revision")
- ComponentNode.AppendChild(RevisionNode)
- Dim RevisionTextElement As XmlText = xmlDoc.CreateTextNode(CStr(oCompDefSumProps.Item("Revision Number").Value))
- ComponentNode.AppendChild(RevisionTextElement)
- Next
- #End Region
- 'Save the XML-Document
- xmlDoc.Save(strWorkspacePath & "\Stücklisten\XML\" & CStr(oUseProps.Item("Zeichnungsnummer").Value) & " - " & CStr(oRefDesProps.Item("Description").Value) & ".xml")
- End Sub
- End Class
Die Werte der Knoten kommen aus dem Namespace der CAD-Software, sollten jedoch für mein Problem nicht weiter von Bedeutung sein.
Kann mir jemand erklären warum die Knoten mal schön sauber untereinander angeordnet werden und mal in Kurzform hintereinander?