2016-08-01 3 views
0

Dies ist die XML-Datei, die ich erstellt:Umbenennung Standard Xmlns

<?xml version="1.0" encoding="utf-8"?> 
<!--This document are generated by Apps. Please dont change any listed data here.--> 
<q1:FilePenting xmlns:ksd="https://nerd.kekesed.id/xmlns/generic/v1" xmlns:q1="https://nerd.kekesed.id/xmlns/installer"> 
<q1:Perpustakaan> 
    <ksd:File PerluBanget="false">Ganteng</ksd:File> 
    <ksd:File PerluBanget="false">Ganteng2</ksd:File> 
</q1:Perpustakaan> 
</q1:FilePenting> 

und ich möchte die q1 Dinge entfernen, ist es wirklich ärgerlich T^T

meine Klassen Ist hier:

<XmlRoot("FilePenting", Namespace:="https://nerd.kekesed.id/xmlns/installer")> _ 
Public Class RequiredFiles 
    <XmlArray("Perpustakaan"), _ 
    XmlArrayItem("File", Namespace:="https://nerd.kekesed.id/xmlns/generic/v1")> _ 
    Public Libs() As Berkas 

    <XmlNamespaceDeclarations()> _ 
    Public xmlns As New XmlSerializerNamespaces 

    Sub New() 
     xmlns.Add("ksd", "https://nerd.kekesed.id/xmlns/generic/v1") 
    End Sub 
End Class 

Public Class Berkas 
    <XmlText()> _ 
    Public NamaFile As String 

    <XmlAttribute("version", namespace:="https://nerd.kekesed.id/xmlns/generic/v1")> _ 
    Public VersiFile As String 

    <XmlAttribute("PerluBanget")> _ 
    Public PerluBanget As Boolean = False 

    Sub New() 

    End Sub 
End Class 

Und dies ist der Serializer Code:

Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
    Dim FileBrow As New Microsoft.Win32.SaveFileDialog 
    With FileBrow 
     .Title = "Init XML Save File" 
     .Filter = "XML File (*.xml)|*.xml" 

     .ShowDialog() 
     If Not .FileName Is Nothing Then 
      'mulai bikin objek dan save dan lain lain lain lain 
      Dim x As New IsiSetup.RequiredFiles() 
      x.Libs = {New Berkas() With {.NamaFile = "Ganteng"}, New Berkas() With {.NamaFile = "Ganteng2"}} 

      Dim Aturannya As New XmlWriterSettings() With {.Indent = True, .IndentChars = " ", .NewLineChars = vbNewLine} 

      Dim penulis As New XmlSerializer(x.GetType) 
      Dim Xmlnya As XmlWriter = XmlWriter.Create(.FileName, Aturannya) 
      Xmlnya.WriteComment("This document are generated by Apps. Please dont change any listed data here.") 

      Dim Ns As New XmlSerializerNamespaces() 
      Ns.Add("", "") 

      penulis.Serialize(Xmlnya, x, Ns) 
      'done 

      Xmlnya.Close() 
     End If 
    End With 
End Sub 

Ich wollte die Standard-xmlns wie w3c usw. entfernen und die Standard-XMLNs zum root hinzufügen.

Wie es geht, ohne zu geben q1 named xmlns? Ich meine, ich möchte es xmlns="https://nerd.kekesed.id/xmlns/installer" sein.

aktualisieren

Ich wollte es nicht von außerhalb der Klasse deklariert werden. Da ich es bei vielen Projekten deklarieren möchte, ist die Deklaration außerhalb der Klasse keine saubere Lösung.

Vielen Dank!

+0

Versuchen Sie 'Ns.Add (" "," https://nerd.kekesed.id/xmlns/installer ")'. –

+0

ahh ich vergaß zu erwähnen, dass ich nicht will, dass es außerhalb der Klasse erklärt. Es wird nicht immer konstant sein, wenn ich die Klasse deklarieren muss ._. – Kekesed

+0

Warum interessiert es dich, welches Präfix verwendet wird? Es ändert nicht den * Informationsgehalt * der Datei ein Bit. –

Antwort

1

Gelöst durch Hinzufügen der Klasse Xmlns beim Serialisieren.

penulis.Serialize(Xmlnya, x, x.xmlns) 

Und nicht zu vergessen die Xmlns zuerst ohne Präfixe auf der Wurzel und die XmlNamespaceDeclarations() ~

<XmlRoot("FilePenting", Namespace:="https://nerd.kekesed.id/xmlns/installer")> _ 
Public Class RequiredFiles 

    <XmlArray("Perpustakaan"), _ 
    XmlArrayItem("File", Namespace:="https://nerd.kekesed.id/xmlns/generic/v1")> _ 
    Public Libs() As Berkas 

    <XmlElement("Provider")> _ 
    Public Vendor As Provider 

    <XmlNamespaceDeclarations()> _ 
    Public xmlns As New XmlSerializerNamespaces 

    Sub New() 
     xmlns.Add("", "https://nerd.kekesed.id/xmlns/installer") 
     xmlns.Add("ksd", "https://nerd.kekesed.id/xmlns/generic/v1") 
    End Sub 
End Class 

und dies ist zu erklären, was ich wollte, dass es wie folgt aussieht: 3

<?xml version="1.0" encoding="utf-8"?> 
<!--This document are generated by Apps. Please dont change any listed data here.--> 
<FilePenting xmlns:ksd="https://nerd.kekesed.id/xmlns/generic/v1" xmlns="https://nerd.kekesed.id/xmlns/installer"> 
    <Perpustakaan> 
    <ksd:File PerluBanget="false" Tipe="Liblari">Ganteng</ksd:File> 
    <ksd:File PerluBanget="false" Tipe="Liblari">Ganteng2</ksd:File> 
    </Perpustakaan> 
</FilePenting> 

Sieht es nicht hübsch aus? >. <