Namespaces in XML verstehen?

Ich habe ein XML-Dokument und ein dazugehöriges XML-Schema, beide liegen lokal auf meinem Rechner im gleichen Verzeichnis. Die könnten beispielsweise, der Einfachheit halber, so aussehen:

<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:complexType name="meinEigenerTyp">   
  <xs:all>     
    <xs:element name="name"type="xs:string"/>  
    <xs:element name="nummer" type="xs:unsignedLong" />   
  </xs:all> 
</xs:complexType>

<xs:element name="meinElement" type="meinEigenerTyp" /> </xs:schema>

Sowie:

<?xml version="1.0" encoding="utf-8"?>
<meinElement>
    <name>Name</name>
    <nummer>0123456789</nummer>
</meinElement>

Ich habe nun die folgenden Aufgabe bekommen:

  • Ich soll in dem XML-Dokument einen relativen Pfad angeben, um das XML-Schema für mein XML-Dokument zu verwenden
  • Damit die Elemente "nicht irgendwo in der Luft herumschweben", soll ich sowohl für das XML-Dokument als auch für das XML-Schema einen passenden Namespace verwenden

Soweit so gut. Allerdings kapier ich überhaupt nicht, was ich machen soll. Ich habe mir https://www.w3schools.com/XML/xml\_namespaces.asp angeschaut, aber ich verstehe nicht, warum da immer eine Webadressen angegeben wird, auch bei den Beispielen im Internet. Meine Dateien liegen doch auf meinem Computer, in einem Verzeichnis und nicht irgendwo im Internet?

Für den ersten Teil der Aufgabe, den relativen Pfad, habe ich mir /Forums/en-US/home?forum=how-to-specify-a-relative-path-for-the-xsd-file-in-the-xml-source-file angeschaut, aber auch verstehe ich nicht, was da gemacht wird.

Könnte mir bitte jemand erklären, wie man die Namespaces verwendet und wie ich dann zu meiner Lösung komme?

Computer, Internet, Software, Technik, Programmieren, Informatik, Technologie, XML, Spiele und Gaming
2 Antworten
Wie kann ich beim Scrollen einer Listview mehr Items laden?

Meine App zieht über eine PHP Verbindung Werte aus einer Datenbank und stellt sie in einer Listview dar. Problem ist, dass die App ab einer bestimmten Anzahl von Datenbankeinträgen crasht, weil sie nicht alle Werte der Datenbank laden kann.

Die Lösung ist immer nur 10 Items zu laden und beim Runterscrollen werden weitere 10 geladen.

Wie kann ich, wenn man bei der Listview nach ganz unten gescrollt hat, einen Progressdialog anzeigen und so weitere 10 Items laden?

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout, container, false);
listView1 = (ListView) view.findViewById(R.id.listview);
listView1.setOnItemClickListener(this);
getURLs();

return view;

}

private void getImages(){ class GetImages extends AsyncTask<Void,Void,Void>{ ProgressDialog loading; @Override protected void onPreExecute() { super.onPreExecute(); loading = ProgressDialog.show(getActivity(),"Loading ...","Please wait...",false,false); }

@Override
protected void onPostExecute(Void v) {
    super.onPostExecute(v);
    loading.dismiss();
    //Toast.makeText(ImageListView.this,"Success",Toast.LENGTH_LONG).show();
    CustomList customList = new CustomList(getActivity(),GetAllData.1,GetAllData.2,GetAllData.3,GetAllData.4,GetAllData.5,GetAllData.6);
    listView1.setAdapter(customList);
}

@Override
protected Void doInBackground(Void... voids) {
    try {
        getAllData.getAllImages();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

} GetImages getImages = new GetImages(); getImages.execute();

}

private void getURLs() { class GetURLs extends AsyncTask<String,Void,String>{ ProgressDialog loading;

@Override
protected void onPreExecute() {
    super.onPreExecute();
    loading = ProgressDialog.show(getActivity(),"Loading...","Please Wait...",true,true);
}

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    loading.dismiss();
    getAllData = new GetAllData(s);
    getImages();
}

@Override
protected String doInBackground(String... strings) {
    BufferedReader bufferedReader = null;
    try {
        URL url = new URL(strings[0]);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        StringBuilder sb = new StringBuilder();

        bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

        String json;
        while((json = bufferedReader.readLine())!= null){
            sb.append(json+"\n");
        }

        return sb.toString().trim();

    }catch(Exception e){
        return null;
    }
}

} GetURLs gu = new GetURLs(); gu.execute(GET_IMAGE_URL); }

Die classes CustomList und GetAllData werden nicht benötigt, da die CustomList die Listview nur mit Details versorgt und GetAllData nur die Daten über ein PHP Script zieht.

Ich will keine RecyclerView verwenden!

Das Hauptgeschehen mit der Listview spielt sich in dieser classe ab.

Server, Programmieren, Java, Minecraft, PHP, XML, Android Studio, Fortnite
2 Antworten
Wie kann man im Qt Designer den Code einfach zu Python umwandeln?

Hallo.

Also ich brauche Hilfe. Ich würde gern Windows Forms über Python statt mit C# programmieren, weil Python kann bis unendlich viel rechnen als C# und daraus möchte ich einen super Taschenrechner programmieren.

Ich verwende den Qt Designer und versuche denn Code umzuwandeln. Ich habe im Internet geschaut und diesen Code eingegeben:

from PyQt5 import uic, QtWidgets
import sys
 
class Ui(QtWidgets.QDialog):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('Test.ui', self)
        self.show()
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())

Ja und wenn ich das dann ausführe, spuckt er diese Fehlermeldung aus:

Traceback (most recent call last):
  File "C:/Users/PrinzPersia/Documents/Test.py", line 12, in <module>
    window = Ui()
  File "C:/Users/PrinzPersia/Documents/Test.py", line 7, in __init__
    uic.loadUi('Test.ui', self)
  File "C:\Users\PrinzPersia\AppData\Local\Programs\Python\Python35-32\lib\site-packages\PyQt5\uic__init__.py", line 226, in loadUi
    return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)
  File "C:\Users\PrinzPersia\AppData\Local\Programs\Python\Python35-32\lib\site-packages\PyQt5\uic\Loader\loader.py", line 72, in loadUi
    return self.parse(filename, resource_suffix, basedir)
  File "C:\Users\PrinzPersia\AppData\Local\Programs\Python\Python35-32\lib\site-packages\PyQt5\uic\uiparser.py", line 992, in parse
    document = parse(filename)
  File "C:\Users\PrinzPersia\AppData\Local\Programs\Python\Python35-32\lib\xml\etree\ElementTree.py", line 1183, in parse
    tree.parse(source, parser)
  File "C:\Users\PrinzPersia\AppData\Local\Programs\Python\Python35-32\lib\xml\etree\ElementTree.py", line 583, in parse
    source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'Test.ui'

Wisst ihr, woran es liegt? Ich kenne mich im Qt Designer gar nicht gut aus und Videotutorials anschauen ist wegen der niedrigen Bildschirmauflösung sehr anstrengend.

PC, Computer, Programmieren, Code, Python, Windows Forms, XML
1 Antwort
Bachelorarbeit - Mit Java Grundkenntnisse eine Android-App entwickeln?

Hallo!

Ich stehe gerade vor meiner Bachelorarbeit und bin gerade dabei mir ein passendes Thema zu überlegen. Ich möchte gerne was im Bereich Softwarentwicklung (java) machen.

Während meines Studium habe ich mich ein wenig mit Java beschäftigt und in der letzten Zeit habe ich mich die Grundkenntnisse in Java nochmal angeeignet. War für mich zwar nicht ganz einfach, da ich in der Vergangenheit nicht so viel mit der objektorientierung zu tun gehabt habe, aber einigermaßen hat das schon geklappt.

Allgemeines Verständnis über Programmieren habe ich (VBA, ein wenig Pascal, JavaScript). Nun habe ich mir ein Thema überlegt und bin gerade am Überlegen ob ich mich mit einer Einarbeitungszeit von ca. 1 - 2 Monaten genügend Kentnisse im Bereich der Entwicklung von Java/Android-Apps aneignen kann, um anschließend in ca. 1 1/2 Monaten die Implementierung abzuschließen. So wahnsinnig komplex währe die Anwendung meiner Meinung nach nicht. Im Grunde geht es um folgendes:

  • speichern/auslesen von Kundendaten über eine Datenbank
  • Bearbeiten von Kundendaten
  • Kunden nach bestimmten Kriterien filtern
  • bestimmte Mails mit der JavaMail API auslesen und nach bestimmten Informationen suchen (habe ich schon mal versucht, hat auch ganz gut geklappt)
  • evtl. noch das einbinden bon Google Maps (Alle Kunden sind in einer Google Maps Karte quasie markiert und wenn ich mich diesem Standort auf x Metern nähere, soll die App dies erkennen und in eine Liste abspeichern)

Letzteres muss man mal sehen, kommt drauf an wie "komplex" die Realisierung ist.Zusätzlich sollte das vom Layout einigermaßen ansprechend ausschauen.

Ich weiß, dass ich mich wohl neben Java noch ein wenig in XML einarbeiten muss und die Architektur eine andere ist, aber Java haben beide Architekturen (Pc/Smartphone) gemeinsam.

Wie sehr ist die Umstellung von der Entwicklung auf herkömmliche Weise und die Enwicklung auf Android Geräte ? Jemand Erfahrungen ? Wie hat die Einarbeitung (z.B. der Zeitaufwand) mit der Enwicklung von Apps geklappt ? Was glaubt ihr wie viel Zeit man in etwas benötigt um Anwendung (wie oben beschrieben) und einem Grundlagenwissen in Java (jedoch ffortgeschrittene Programmierkentnisse im allgemeinen) zu realisieren ? Ich bedanke mich =)

Computer, Technik, Java, Programmierung, Android, Bachelorarbeit, Technologie, XML, gui
2 Antworten
C# Wert zwischenspeichern und neu einlesen?

Hallo, ich habe eine Anwendung, in der ich eine Xml-Datei einlesen/öffnen kann (Benutzername und Passwort). Beim speichern kann ich dann eine neue Datei anlegen, in der das Passwort dann verschlüsselt ist. Wie kann ich das Passwort beim erneuten öffnen wieder entschlüsseln? Ich muss doch den Wert beim Speichern irgendwie zwischenspeichern und beim erneuten öffnen wieder ausgeben?

Variablen:

public string zwischenspeichern;
		private string cipherData;
		private byte[] chiperbytes;
		private byte[] plainbytes;
		private byte[] plainbytes2;
		private byte[] plainKey;

Code Verschlüsselung (funktioniert):

cipherData = textBoxVerschlüsselung.Text;
					plainbytes = Encoding.ASCII.GetBytes(cipherData);
					plainKey = Encoding.ASCII.GetBytes("01234567890abcdef");
					desObj.Key = plainKey;
					desObj.Mode = CipherMode.CBC;
					desObj.Padding = PaddingMode.PKCS7;
					MemoryStream ms = new MemoryStream();
					CryptoStream cs = new CryptoStream(ms, desObj.CreateEncryptor(), CryptoStreamMode.Write);
					cs.Write(plainbytes, 0, plainbytes.Length);
					cs.Close();
					chiperbytes = ms.ToArray();
					ms.Close();
textBoxVerschlüsselung.Text = Encoding.ASCII.GetString(chiperbytes);

Code Entschlüsselung: (funktioniert nicht):

System.IO.MemoryStream ms1 = new MemoryStream(chiperbytes);
				CryptoStream cs1 = new CryptoStream(ms1, desObj.CreateDecryptor(), CryptoStreamMode.Read);
            cs1.Read(chiperbytes, 0, chiperbytes.Length);
            plainbytes2 = ms1.ToArray();
            cs1.Close();
            ms1.Close();
            textBoxPasswort.Text = Encoding.ASCII.GetString(plainbytes2);

Entschlüsselung wird beim klick auf den Öffnen Button ausgeführt und Verschlüsselung beim klick auf den Speichern Button.

Technik, Programmierung, C Sharp, Technologie, Verschlüsselung, Visual Studio, XML, Entschlüsselung
2 Antworten
C# Xml-Datei in Programm einlesen und Änderungen speichern?

Hallo, ich programmiere derzeit ein Programm, welches Xml-Dateien einliest. Nun möchte ich aber, das wenn ich im datagridview Text aus der Xml-Datei ändere und auf den Button speichern klicke, die Änderungen dann im Xml-Dokument zu sehen sind z.B. in der Spalte Name Mayer steht, ich ihn auf Huber ändere und wenn ich dann auf speichern klicke der Name auch im Xml-Dokument geändert ist. VIelen Dank für eure Hilfe. :)

Code:

namespace MehrerePersonen
{
    public partial class Form1 : Form
    {
        private OpenFileDialog openfiledialog;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void buttonPfad_Click(object sender, EventArgs e)
        {
            OpenFileDialog openfiledialog = new OpenFileDialog();
            if (openfiledialog.ShowDialog() == DialogResult.OK)
            {
                textBoxPfad.Text = (openfiledialog.FileName);
            }
        }

        public void buttonErstellen_Click(object sender, EventArgs e)
        {
            XmlDocument xml = new XmlDocument();
            XmlReader xmlFile;
            xmlFile = XmlReader.Create("MehrerePersonen.xml", new XmlReaderSettings());
            DataSet ds = new DataSet();
            ds.ReadXml(xmlFile);
            dataGridView.DataSource = ds.Tables[0];

            xml.Load(textBoxPfad.Text);
                foreach (XmlNode node in xml.ChildNodes)
                {
                    if (node.Name == "Personen")
                    {
                        foreach (XmlNode node_of_node in node.ChildNodes)
                        {
                            if (node_of_node.Name == "Person")
                            {
                                string name = node_of_node["Name"].InnerText;
                                string vorname = node_of_node["Vorname"].InnerText;
                                string wohnort = node_of_node["Wohnort"].InnerText;
                                dataGridView.Text = name;
                                dataGridView.Text = vorname;
                                dataGridView.Text = wohnort;
                            }
                        }
                    }
                }
        }

        public void buttonSpeichern_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                                     //Was muzss hier in den buttonSpeichern
            }
        }
    }
}
Programmierung, CSharp, XML
1 Antwort
C# XML-Datei mit ButtonPfad auswählen/laden und mit ButtonErstellen erstellen?

Hallo, ich bin ein C# Anfänger und will eine XML-Datei mit ButtonPfad und openfiledialog öffnen und den Pfad der Datei anzeigen und mit ButtonErstellen dann den Text der XML-Datei in den Listboxen anzeigen.

Hier der Code:

using System;

using System.IO;

using System.Windows.Forms;

using System.Xml;

namespace MehrerePersonen

{

  public partial class Form1 : Form

  {

    private OpenFileDialog openfiledialog;

    public Form1()

    {

      InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    }

    private void buttonPfad_Click(object sender, EventArgs e)

    {

      OpenFileDialog openfiledialog = new OpenFileDialog();

      if (openfiledialog.ShowDialog() == DialogResult.OK)

      {

        XmlDocument xml = new XmlDocument();

        xml.Load(openfiledialog.FileName);

        textBoxPfad.Text = Path.GetDirectoryName(openfiledialog.FileName);

      }

    }

    public void buttonErstellen_Click(object sender, EventArgs e)

    {  

      XmlDocument xml = new XmlDocument();

        foreach (XmlNode node in xml.ChildNodes)

        {

          if (node.Name == "Personen")

          {

            foreach (XmlNode node_of_node in node.ChildNodes)

            {

              if (node_of_node.Name == "Person")

              {

                string name = node_of_node["Name"].InnerText;

                string vorname = node_of_node["Vorname"].InnerText;

                string wohnort = node_of_node["Wohnort"].InnerText;

                listBoxName.Items.Add(name);

                listBoxVorname.Items.Add(vorname);

                listBoxWohnort.Items.Add(wohnort);

              }

            }

          }

        }

    }

  }

Hier die XML-Datei:

Personen>

<Person>

<Name>Mustermann</Name>

<Vorname>Max</Vorname>

<Wohnort>München</Wohnort>

</Person>

<Person>

<Name>Huber</Name>

<Vorname>Michi</Vorname>

<Wohnort>Gilching</Wohnort>

</Person>

<Person>

<Name>Meier</Name>

<Vorname>Franz</Vorname>

<Wohnort>Germering</Wohnort>

</Person>

<Person>

<Name>Werner</Name>

<Vorname>Florian</Vorname>

<Wohnort>Nürnberg</Wohnort>

</Person>

<Person>

<Name>Brömer</Name>

<Vorname>Lukas</Vorname>

<Wohnort>Herrsching</Wohnort>

</Person>

</Personen>

Nachdem ich bei ButtonPfad die Datei "geöffnet" habe und dann auf den ButtonErstellen Button klicke ziegt er die Namen,Vornamen und Wohnorte nicht in den Listboxen an. Wenn ich den gesamten Code in ButtonErstellen habe und in ButtonPfad garnichts macht er's.

Hilfe pls.

Thx.

Computer, Anfänger, Datei, Schule, Programmierung, CSharp, Visual Studio, XML
1 Antwort
XML-Datei in Visual Studio 2017/C# einlesen?

Hi, ich bin ein C# anfänger und will eine XML Datei bzw den Text in drei Textboxen (vorname, name, wohnort) einlesen. Es wird aber bei "Vorname", "Name" und "Wohnort" der gesamte InnerText in allen drei Textboxen eingelesen.

Form1.cs Code:

using System;

using System.ComponentModel;

using System.IO;

using System.Windows.Forms;

using System.Xml;

namespace Personen

{

  public partial class form1 : Form

  {

    public form1()

    {

      InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    }

    private void open_Click(object sender, EventArgs e)

    {

      OpenFileDialog ofd = new OpenFileDialog();

      ofd.Filter = "Xml-Datei|.xml";

      if (ofd.ShowDialog() == DialogResult.OK)

      {

        XmlDocument doc = new XmlDocument();

        doc.Load("C:\Users\lukas.broemer\Desktop\Lukas Brömer Ausbildung\C# XML Programme\Personen.xml");

        XmlElement root = doc.DocumentElement;

        vorname.Text = root.InnerText;

        name.Text = root.InnerText;

        wohnort.Text = root.InnerText;

         

        textBox1.Text = Path.GetDirectoryName(ofd.FileName);

      }

    }

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

    {

    }

  }

Personen.xml Code:

<Person>

<Name>Mustermann</Name>

<Vorname>Max</Vorname>

<Wohnort>München</Wohnort>

</Person>

In der Form1.cs [Design] kann ich die XML-Datei auswählen und einlesen, bei jeder Textbox steht dann "MustermannMaxMünchen". Also bei der Textbox Vorname steht dann "MustermannMaxMünchen" statt "Max", bei Name steht auch "MustermannMaxMünchen" statt "Mustermann" und bei Wohnort steht auch wieder "MustermannMaxMünchen" statt "München".

Irgendwas stimmt bei

  XmlElement root = doc.DocumentElement;

        vorname.Text = root.InnerText;

        name.Text = root.InnerText;

        wohnort.Text = root.InnerText;

nicht.

Er liest den ganzen Text ein und nicht bei jeder Textbox die einzelnen Elemente.

Bitte helft mir. :D

Thx. :D






Computer, Anwendung, Programmierung, CSharp, XML
3 Antworten
[Programmieren] Was sind diese Defs?

Ich habe mir ein Spiel gekauft, welches auch Modding unterstützt. Scheinbar, um Modder zu unterstützen, gibt es von dem Entwickler einen großen Ordner mit einer Vielzahl an XML-Dateien, die beispielsweise SocialDef oder EreignisDef heißen. Diese Dateien scheinen alle ähnlich aufgebaut sein, in der Form von:

<BeispielDefs>
    <BeispielDef>
        <label>A</label>
    </BeispielDef>
    <BeispielDef>
        <label>B</label>
    </BeispielDef>
    <BeispielDef>
        <label>C</label>
    </BeispielDef>
</BeispielDefs>

( Das hat der Texteditor hier leider etwas zerschossen).

So was kommt mir von XML-Serialisierung grob bekannt vor. Meine Frage ist nun, ob ich das ganze Szenario richtig verstehe:

  1. Man programmiert eine Klasse BeispielDefs, welche alle BeispielDef enthält, die es in dem Programm gibt. Der Zweck dieser Klasse ist lediglich, alle BeispielDef mithilfe von XML-Serialisierung in einer Datei darzustellen.
  2. Jedes BeispielDef wird mit den entsprechenden Informationen befüllt und dann in BeispielDefs eingefügt.

Ist das eine gängige Methode, um zu serialisieren ? Ich kenne mich da nicht gut aus, habe bisher nur kennengelernt, wie man eine XML-Datei serialisiert und deserialisiert. Würde man so Informationen serializieren, wenn man beispielsweise einige BeispielDef hat und man diese alle in einer Datei schreiben möchte oder würde man eher eine andere Methode benutzen, um Daten zu serialisieren ?

Software, Windows, Programmieren, CSharp, Informatik, XML
1 Antwort

Meistgelesene Fragen zum Thema XML