Laden...

XML Position einer Variabel zuordnen

Erstellt von Swissflame vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.647 Views
S
Swissflame Themenstarter:in
1 Beiträge seit 2011
vor 13 Jahren
XML Position einer Variabel zuordnen

Hallo, bin am lernen, Learning by duing... habe ein Adressbuch zusammengebastelt, funktioniert gut.
Als Erweiterung wollte ich den Webservice von einem Schweizer online-Telefonbuch nutzen:http://tel.search.ch
Infos zum Webservice:http://tel.search.ch/api/help

mein Code sieht bis jetzt wie folgt aus:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;


namespace testsearch
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btAnzeigen_Click(object sender, EventArgs e)
        {
            string url = @"http://tel.search.ch/api/?was=" + tbName.Text + "+" + tbVorname.Text + "&wo=" + tbOrt.Text + "&key=51c82d1c2142eaf532b32dde974ecd72";
            System.Net.WebClient c = new WebClient();
            byte[] response = c.DownloadData(url);
            string test = Encoding.ASCII.GetString(response);
            lbAnzeige.Text = (test);
        }
    }
}


Ich bekomme dann folgendes zurückgeliefert:



<?xml version="1.0" encoding="ISO-8859-1" ?>
<feed xml:lang="de" xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:tel="http://tel.search.ch/api/spec/result/1.0/">
  <id>http://tel.search.ch/api/51c82d1c2142eaf532b32dde974ecd72/a7ea559a5774546c217dd22c7e6009b0</id>
  <title type="text">tel.search.ch API Search Results</title>
  <generator version="1.0" uri="http://tel.search.ch">tel.search.ch</generator>
  <updated>2011-01-31T03:00:00Z</updated>
  <link href="http://tel.search.ch/result.html?was=emil+odermatt&amp;wo=6373" rel="alternate" type="text/html" />
  <link href="http://tel.search.ch/api/?was=emil+odermatt&amp;wo=6373&amp;key=51c82d1c2142eaf532b32dde974ecd72" type="application/atom+xml" rel="self" />
  <openSearch:totalResults>1</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>10</openSearch:itemsPerPage>
  <openSearch:Query role="request" searchTerms="emil odermatt" startPage="1" />
  <openSearch:Image height="1" width="1" type="image/gif">http://www.search.ch/audit/CP/tel/de/api</openSearch:Image>
  <entry>
    <id>urn:uuid:38bf25e6c3cea7c2</id>
    <updated>2011-01-31T03:00:00Z</updated>
    <published>2011-01-31T03:00:00Z</published>
    <title type="text">Odermatt, Emil</title>
    <content type="text">Odermatt, Emil
    Metzger
    Schulhausstr. 3
    6373 Ennetb?rgen/NW
    041 620 59 38</content>
    <author>
      <name>tel.search.ch</name>
    </author>
    <link href="http://tel.search.ch/ennetbuergen/schulhausstr-3/emil-odermatt" title="Details" rel="alternate" type="text/html" />
    <link href="http://tel.search.ch/vcard/Odermatt.vcf?key=38bf25e6c3cea7c2" type="text/x-vcard" title="VCard Download" rel="alternate" />
    <link href="http://tel.search.ch/edit/?id=38bf25e6c3cea7c2" rel="edit" type="text/html" />
    <tel:pos>1</tel:pos>
    <tel:id>38bf25e6c3cea7c2</tel:id>
    <tel:type>Person</tel:type>
    <tel:name>Odermatt</tel:name>
    <tel:firstname>Emil</tel:firstname>
    <tel:occupation>Metzger</tel:occupation>
    <tel:street>Schulhausstr.</tel:street>
    <tel:streetno>3</tel:streetno>
    <tel:zip>6373</tel:zip>
    <tel:city>Ennetb?rgen</tel:city>
    <tel:canton>NW</tel:canton>
    <tel:phone>+41416205938</tel:phone>
  </entry>
</feed>

Nun zu meiner Frage:
Wie geht es am einfachsten, um z.B das Element <tel:phone>+41416205938</tel:phone> heraus zu picken, und einer Variabel zuzuweisen?

Danke im Voraus
Klaus

L
416 Beiträge seit 2008
vor 13 Jahren

Wenn du immer nur eine Telefonnr. hast wäre Regex wohl der einfachste Weg. Ansonsten bietet sich für sowas XPath (MSDN Beispiel) an.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Swissflame,

du hast mehrere Möglichkeiten. Ich würde an deiner Stelle LINQ verwenden. Hier findest du ein Beispiel: Read XML with Namespace resolution using XLinq.XElement.

zero_x