2016-08-01 3 views
0

これは私が生成されたXMLファイルです:の名前の変更デフォルトの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> 

と私はq1物事を削除したい、それは本当に迷惑T^T

だがここに私のクラスです:

<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 

これはシリアライザコードです:

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 

w3cなどのようなデフォルトのxmlnsを削除し、ルートにデフォルトのxmlnsを追加したいと考えました。

q1 xmlnsという名前を付けずに行う方法?私はそれがxmlns="https://nerd.kekesed.id/xmlns/installer"であることを意味します。

更新

私はそれは、クラスの外部から宣言することはしたくありませんでした。私は多くのプロジェクトでそれを宣言したいので、クラスから外に宣言するのはきれいな解決策ではありません。

ありがとうございました!

+0

'Ns.Add(" "、" https://nerd.kekesed.id/xmlns/installer ")'を設定してみてください。 –

+0

ああ、私は授業の外から宣言したくないということを忘れていました。私はクラスを宣言する必要があるたびに定数ではありません。 – Kekesed

+0

なぜプレフィックスが使用されているのか気になりますか?ファイルの*情報内容*は1ビット変更されません。 –

答えて

1

シリアライズ時にクラスのXmlnsを追加して解決しました。

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

そして、ルート上のプレフィックスなしで最初のxmlnsを宣言することを忘れや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 

と、これは私はそれがどのように見える望んでいない: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> 

かわいいですか? >。 <

関連する問題