2016-08-01 2 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 

Я хотел удалить xmlns по умолчанию, например w3c etc, и добавить xmlns по умолчанию в корневой каталог.

Как это сделать без выделения q1 с именем xmlns? Я имею в виду, я хочу, чтобы это было xmlns="https://nerd.kekesed.id/xmlns/installer".

Update

Я не хочу, чтобы это было объявлено снаружи класса. Поскольку я хочу объявить его во многих проектах, значит, объявление вне класса не является чистым решением.

Спасибо!

+0

Попробуйте установить 'Ns.Add (" "," https://nerd.kekesed.id/xmlns/installer ")'. –

+0

ahh я забыл упомянуть, что я не хочу, чтобы он был объявлен извне класса. Он не будет постоянным каждый раз, когда мне нужно объявить класс ._. – Kekesed

+0

Почему вас беспокоит, какой префикс используется? Он не изменяет * информационный контент * файла один бит. –

ответ

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> 

Не правда ли? >. <

Смежные вопросы