Attribute aus XML Auslesen

dior

Bekanntes Mitglied
Hallo,

ich habe eine XML in folgendem Format:

XML:
<?xml version="1.0" encoding="utf-8"?>
<RealTimeNetworkStatus FormatVersion="1.1" Generator="TestGenerator">
  <Date>2015-08-07</Date>
  <Time>12:06:00.0</Time>
  <ElevationMask>10.0</ElevationMask>
  <NetworkClusters>
    <Cluster Name="Cluster1">
      <SatelliteSystems>
        <System Name="GPS">
          <Site Name="Kls1" visible="4" visible2="0" visible3="8"/>
          <Site Name="Trz1" visible="8" visible2="8" visible3="6"/>
          <Site Name="Blo1" visible="8" visible2="8" visible3="8"/>
          <Site Name="Lea1" visible="8" visible2="8" visible3="3"/>
          <Site Name="Lad1" visible="8" visible2="8" visible3="7"/>
          <Site Name="Lia1" visible="8" visible2="8" visible3="8"/>
          <Site Name="Kos1" visible="8" visible2="7" visible3="6"/>
          <Site Name="Sxc1" visible="8" visible2="8" visible3="5"/>
        </System>
        <System Name="Cluster2">
          <Site Name="Kls1" visible="7" visible2="7" visible3="6"/>
          <Site Name="Trz1" visible="7" visible2="7" visible3="3"/>
          <Site Name="Blo1" visible="7" visible2="7" visible3="6"/>
          <Site Name="Lea1" visible="7" visible2="7" visible3="5"/>
          <Site Name="Lad1" visible="7" visible2="7" visible3="6"/>
          <Site Name="Lia1" visible="7" visible2="7" visible3="6"/>
          <Site Name="Kos1" visible="7" visible2="7" visible3="5"/>
          <Site Name="Sxc1" visible="7" visible2="7" visible3="4"/>
        </System>
      </SatelliteSystems>
    </Cluster>
  </NetworkClusters>
</RealTimeNetworkStatus>

ich schaffe es aber nicht die Site Attribute auszulesen.
Ich bräuchte am besten jedes Attribut in einer Liste.

Mein bisheriger Versuch sieht so aus:
Java:
SAXBuilder saxBuilder = new SAXBuilder();

  Document document = saxBuilder.build(inputFile);
  System.out.println("Root element :"
  + document.getRootElement().getName());

  Element classElement = document.getRootElement();

  List<Element> Cluster = classElement.getChildren();
  List<Attribute> Cluster2 = classElement.getAttributes();
  System.out.println(Cluster.toString());
  System.out.println(Cluster2.toString());
  System.out.println("----------------------------");

  Document doc = (Document) saxBuilder.build(xmlFile);

  List stations = doc.getRootElement().getChildren("Site");
  for (int i = 1; i <= stations.size(); i++) {
  Element stationen = (Element) stations.get(i);
  String name = stationen.getAttributeValue("Name");
  System.out.println("Site Name: " + name);
  }

Es wäre echt nett wenn mir hierbei jemand helfen könnte!

danke
 

Flown

Administrator
Mitarbeiter
Du verwendest JDOM sehe ich das richtig?

Würde es dir auch mit dem normalen DOM-Parser reichen?
Java:
String s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
     + "<RealTimeNetworkStatus FormatVersion=\"1.1\" Generator=\"TestGenerator\">\r\n"
     + "  <Date>2015-08-07</Date>\r\n" + "  <Time>12:06:00.0</Time>\r\n"
     + "  <ElevationMask>10.0</ElevationMask>\r\n" + "  <NetworkClusters>\r\n"
     + "  <Cluster Name=\"Cluster1\">\r\n" + "  <SatelliteSystems>\r\n"
     + "  <System Name=\"GPS\">\r\n"
     + "  <Site Name=\"Kls1\" visible=\"4\" visible2=\"0\" visible3=\"8\"/>\r\n"
     + "  <Site Name=\"Trz1\" visible=\"8\" visible2=\"8\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Blo1\" visible=\"8\" visible2=\"8\" visible3=\"8\"/>\r\n"
     + "  <Site Name=\"Lea1\" visible=\"8\" visible2=\"8\" visible3=\"3\"/>\r\n"
     + "  <Site Name=\"Lad1\" visible=\"8\" visible2=\"8\" visible3=\"7\"/>\r\n"
     + "  <Site Name=\"Lia1\" visible=\"8\" visible2=\"8\" visible3=\"8\"/>\r\n"
     + "  <Site Name=\"Kos1\" visible=\"8\" visible2=\"7\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Sxc1\" visible=\"8\" visible2=\"8\" visible3=\"5\"/>\r\n"
     + "  </System>\r\n" + "  <System Name=\"Cluster2\">\r\n"
     + "  <Site Name=\"Kls1\" visible=\"7\" visible2=\"7\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Trz1\" visible=\"7\" visible2=\"7\" visible3=\"3\"/>\r\n"
     + "  <Site Name=\"Blo1\" visible=\"7\" visible2=\"7\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Lea1\" visible=\"7\" visible2=\"7\" visible3=\"5\"/>\r\n"
     + "  <Site Name=\"Lad1\" visible=\"7\" visible2=\"7\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Lia1\" visible=\"7\" visible2=\"7\" visible3=\"6\"/>\r\n"
     + "  <Site Name=\"Kos1\" visible=\"7\" visible2=\"7\" visible3=\"5\"/>\r\n"
     + "  <Site Name=\"Sxc1\" visible=\"7\" visible2=\"7\" visible3=\"4\"/>\r\n"
     + "  </System>\r\n" + "  </SatelliteSystems>\r\n" + "  </Cluster>\r\n"
     + "  </NetworkClusters>\r\n" + "</RealTimeNetworkStatus>";

try {
   Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
       .parse(new InputSource(new StringReader(s)));

   doc.getDocumentElement().normalize();
   NodeList sites = doc.getElementsByTagName("Site");
   for (int i = 0; i < sites.getLength(); i++) {
     Node cur = sites.item(i);
     NamedNodeMap attributes = cur.getAttributes();
     Node name = attributes.getNamedItem("Name");
     System.out.println(i + ": " + name.getNodeValue());
   }
} catch (SAXException | IOException | ParserConfigurationException e) {
   e.printStackTrace();
}

EDIT: Mit JDOM musst du mit der Funktion document.getRootElement().getDescendants(...); suchen:
Java:
try {
   Document document = new SAXBuilder().build(new InputSource(new StringReader(s)));

   for (Element e : document.getRootElement().getDescendants(new ElementFilter("Site"))) {
     System.out.println(e.getAttributeValue("Name"));
   }
} catch (JDOMException | IOException e) {
   e.printStackTrace();
}
 
Zuletzt bearbeitet:

dior

Bekanntes Mitglied
Hallo Flown,

vielen Dank.... das hat Funktioniert!

Noch eine Frage, kann ich so auch einfach auf einzelne Elemente zugreifen? Also nicht alle Auflisten sondern z.B. Zeig mir visible3 bei Name = Kls1 / Cluster1.
 

dior

Bekanntes Mitglied
Ich hab das jetzt einfach so gemacht (keine Ahnung ob es der beste Weg oder komplett umständlich ist...):

Java:
List<Pair> mPairs = new ArrayList<Pair>();
   Pair pair;
    for (Element e : document.getRootElement().getDescendants(new ElementFilter("Site"))) {
      System.out.println("Name: " + e.getAttributeValue("Name") + " - Visible: " + e.getAttributeValue("visible"));
      //System.out.println("aaaaa: " + e.getValue());
      pair = new Pair(e.getAttributeValue("Name"), e.getAttributeValue("visible"));
      mPairs.add(pair);
    }
   
    System.out.println(mPairs.get(3));
 

Flown

Administrator
Mitarbeiter
Du kannst mit XPath arbeiten, dann sieht die Query ca. so aus:
Java:
List<Attribute> evaluation = XPathFactory.instance()
     .compile("//Cluster[@Name='Cluster1']//Site[@Name='Kls1']/@visible3", new AttributeFilter())
     .evaluate(document);
for (Attribute a : evaluation) {
   System.out.println(a);
}

Dazu brauchst du eine extra Library die: jaxen.jar
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W XML einlesen und Attribute auslesen XML & JSON 1
S Attribute von Elementen auslesen mit XPath XML & JSON 2
eQuest XML Jaxen Attribute auslesen XML & JSON 2
H XML Attribute auslesen XML & JSON 5
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
L Transformer verschluckt Attribute bei der Ausgabe XML & JSON 3
P Xpath zugriff auf Attribute XML & JSON 3
R cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'. XML & JSON 4
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
F EMF, XSD to ECore mapping, Attribute vs. Element XML & JSON 2
A XML-Attribute vergleichen XML & JSON 4
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
G JAXB XML-Attribute feststellen XML & JSON 4
2 wie komme ich an die Attribute XML & JSON 3
B 2 Attribute in einer xsl XML & JSON 2
M Gegenseitig ausschließende Attribute definieren in XSD XML & JSON 7
C DOM: Attribute nicht in alphabetischer Reihenfolge schreiben XML & JSON 3
C Mit SAX Parser XML Attribute auswerten XML & JSON 3
S JAXB und viele verschachtelte Attribute XML & JSON 1
G xquery - nodes unterscheiden sich nur durch attribute :-( XML & JSON 4
L Objekt Serialisierung: Schreiben aller Attribute erzwingen XML & JSON 5
E EMF Modell um alle möglichen Attribute auszulesen XML & JSON 12
S XSD: restriction und attribute gleichzeitig XML & JSON 4
V XMLEncoder: Attribute nicht serialisieren XML & JSON 2
D Wie kann ich Namespace Attribute in den Elementen entfernen? XML & JSON 2
M Attribute parsen XML & JSON 6
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
B jdom outputter ohne attribute XML & JSON 2
G Wie Attribute aus XML in ein Model schreiben (StAX)? XML & JSON 7
M attribute funken nicht XML & JSON 3
R Jtree + Attribute XML & JSON 6
Z DOM: Attribute in Knoten schreiben XML & JSON 2
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
M json page 2 auslesen XML & JSON 1
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
Kanda Sorata Eingabefelder von Excel Dateien auslesen XML & JSON 1
K XML vernünftig auslesen XML & JSON 9
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
H SOAPBody auslesen XML & JSON 0
B XML auslesen, benötige Hilfe XML & JSON 13
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
M Json auslesen XML & JSON 7
K XML Auslesen, wie abspeichern? XML & JSON 32
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
R Apache POI: Gezieltes Auslesen von Zellen XML & JSON 2
S XMl auslesen:@ output ? XML & JSON 1
Z Verschachtelte XML auslesen XML & JSON 3
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
I XML IDs auslesen, erst X dann Y XML & JSON 2
S XML - rekursives auslesen - Zeilenumbruch als NodeValue? XML & JSON 3
O XML richtig auslesen XML & JSON 7
Kenan89 XML Tag-ID auslesen mit getElementById XML & JSON 2
J Excel zeilenweise auslesen - POI XML & JSON 5
J Excel Zellen auslesen - automatischer Stopp bei leerer Zelle XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
S SVG auslesen und darstellen XML & JSON 5
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
1 Html tabelle auslesen??? XML & JSON 6
JanUlrich Tabelle auslesen XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
K XMl auslesen XML & JSON 19
P Poi /XSSF : Excel-Tabelle auslesen XML & JSON 2
S XSD-Datei zulässige Werte auslesen XML & JSON 3
D rss auslesen XML & JSON 2
M Große Datei auslesen/in dieser suchen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
J Dateinamen beim Start auslesen XML & JSON 8
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
P jdom XML-Encoding auslesen XML & JSON 12
Nicer Bestimmten Wert aus einer XML Auslesen XML & JSON 34
L XML Daten auslesen und in Tabelle (Array) speichern XML & JSON 1
L XML Dokument auslesen funktioniert nicht richtig XML & JSON 2
C Attributwert aus XML auslesen XML & JSON 10
H XML String auslesen XML & JSON 4
E XML Knoten mit rekursiver Methode auslesen XML & JSON 3
S Dom Baum auslesen XML & JSON 12
J Properties auslesen (Jar) XML & JSON 1
S auslesen XML & JSON 9
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
M XMI-Datei auslesen XML & JSON 4
T EXSD auslesen mit XPath und JDOM XML & JSON 8
M XML-Datum als Referenz auf Objekt-Variable auslesen XML & JSON 5
Spot84 xmi auslesen XML & JSON 20
G Welche Klassen zum erzeugen/auslesen eines XML Files verwend XML & JSON 9
G Xml File schematisch auslesen XML & JSON 2
P NullPointerException beim Auslesen XML & JSON 8
N XML-String in MIDP auslesen XML & JSON 3
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
K XML auslesen (simpel) XML & JSON 10
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
HeRaider Definitionen auslesen und Encoding XML & JSON 3
A SVG Datei auslesen und Batik XML & JSON 1
M XML werte auslesen ! XML & JSON 3
M XML File während Applet-Start auslesen? XML & JSON 10

Ähnliche Java Themen

Neue Themen


Oben