سؤال

وأنا أكتب من ملف XML باستخدام VB.net. عندما أحاول خلق عنصر آخر لتكون مكتوبة الماضي أول، وأخطاء من قوله:

و"رمز StartElement في ولاية EndRootElement من شأنه أن يؤدي في وثيقة XML غير صالحة. تأكد من أن يتم تعيين الإعداد ConformanceLevel إلى ConformanceLevel.Fragment أو ConformanceLevel.Auto إذا كنت ترغب في كتابة جزء XML."

وأنا لست متأكدا لماذا تفعل هذا بالنظر إلى أن العنصر السابق تم إغلاق. حاولت أن تبحث عن writer.WriteEndRootElement، لكني لم أرى أي هناك. أي اقتراحات للحصول على عمل؟ =)

    Private Sub writeXMLFile(ByVal childform As Fone_Builder_Delux.frmData, ByVal filename As String)

        Dim xmlSettings As New XmlWriterSettings()
        xmlSettings.Indent = True
        xmlSettings.NewLineOnAttributes = True

        Using writer As XmlWriter = XmlWriter.Create(filename, xmlSettings)

            writer.WriteStartDocument()
            writer.WriteStartElement("header")

            writer.WriteStartAttribute("filepath")
            writer.WriteValue(filename)
            writer.WriteEndAttribute()

            writer.WriteEndElement()
            writer.WriteStartElement("variable")
            writer.WriteStartAttribute("varName")

            writer.WriteValue(childform.datagridHeaders.Item(0, 1))

            writer.WriteEndAttribute()
            writer.WriteEndElement()
            writer.WriteEndDocument()
            writer.Flush()

        End Using


    End Sub
هل كانت مفيدة؟

المحلول

وثيقة XML يمكن أن يكون واحد فقط العنصر الجذر. كنت بدأت الوثيقة، كتابة "رأس" عنصر، وإغلاق "رأس" عنصر، ثم بدء الجديد "متغير" عنصر - الذي سيكون العنصر الجذر الثاني

وإما أرفق كل من "رأس" و "متغير" في غضون عنصر مستوى أعلى واحد، أو نقل واحد منهم داخل الآخر.

نصائح أخرى

ويمكنك أن تجرب شيئا من هذا القبيل

 Private Sub writeXMLFile(ByVal childform As Fone_Builder_Delux.frmData, ByVal filename As String)

    Dim xmlSettings As New XmlWriterSettings()
    xmlSettings.Indent = True
    xmlSettings.NewLineOnAttributes = True

    Using writer As XmlWriter = XmlWriter.Create(filename, xmlSettings)

        writer.WriteStartDocument()
        writer.WriteStartElement("root")
        writer.WriteStartElement("header")

        writer.WriteStartAttribute("filepath")
        writer.WriteValue(filename)
        writer.WriteEndAttribute()

        writer.WriteEndElement()
        writer.WriteStartElement("variable")
        writer.WriteStartAttribute("varName")

        writer.WriteValue(childform.datagridHeaders.Item(0, 1))

        writer.WriteEndAttribute()
        writer.WriteEndElement()
        writer.WriteEndElement()
        writer.WriteEndDocument()
        writer.Flush()

    End Using


End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top