Hängt davon ab, wo Sie die Daten behalten, die diese Terminals identifizieren, ist das in einer Tabelle? Dann könnten Sie so etwas wie dieses
def write_data_xml credential
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.genesis {
xml.terminals {
xml.terminal {
xml.name credential.name
xml.type credential.type
xml.credentials {
xml.username credential.username
xml.password credential.password
xml.token credential.token
}
}}
}
end
File.open("credentials.xml", "a+") { |file| file.write builder.to_xml}
end
end
tun Angenommen, Sie verwenden Active könnten Sie dann
Credentials.each do |credential|
write_data_xml credential
end
Wenn keine Tabelle, könnten Sie ein Array von Strukturen verwenden, wo Sie die benötigten Daten zu sammeln.
EDIT auf Anfrage der OP, hier eine Version, die nicht die einzige Verantwortung Prinzip
def write_data_xml
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.genesis {
xml.terminals {
Credentials.each do |credential|
xml.terminal {
xml.name credential.name
xml.type credential.type
xml.credentials {
xml.username credential.username
xml.password credential.password
xml.token credential.token
}
end
}}
}
end
File.write("credentials.xml", builder.to_xml)
end
end
EDIT2
hier ein Beispiel, wie diese, da es mit einer Reihe von Strukturen zu verwenden, folgt keine Datenbank ist noch
Credentials = []
Credential = Struct.new(:name, :type, :username, :password, :token)
Credentials << Credential.new('PPRO_Terminal', 'ppro', 'user1', 'passwd1', '5e36e51de2dde626804a8772dc26238c4d722bbc')
Credentials << Credential.new('PPRO_Terminal2', 'ppro', 'user2', 'passwd2', '...')
p Credentials
[#<struct Credential name="PPRO_Terminal", type="ppro", username="user1", password="passwd1", token="5e36e51de2dde626804a8772dc26238c4d722bbc">, #<struct Credential name="PPRO_Terminal2", type="ppro", username="user2", password="passwd2", token="...">]
NB zumindest, erstellen Sie diese außerhalb des Verfahrens
Ich habe den Beitrag aktualisiert. –
@Peter, es ist besser, nicht alles in eine große Methode zu setzen (https://en.wikipedia.org/wiki/Single_responsibility_principle), selbst das Schreiben in die Datei wäre besser aus den Methoden heraus, die das Optimum einfach wieder zurückbringen würde XML-Zeichenfolge Jedenfalls, wenn es dir egal ist, kannst du meine Schleife an der Stelle einfügen, auf die du in deinem Schnitt hingewiesen hast. es ist auch nicht klar, ob Sie alle xml in einer Datei oder eine Datei für jedes Terminal wollen – peter
Ich will alles in eine Datei. Können Sie Ihre Antwort aktualisieren, so dass ich mit einem Blick Terminals in Tag-Terminals erzeugen kann? –