Gewusst wie: Erstellen von Webdiensten, die den Inhalt einer Webseite analysieren
Mit ASP.NET erstellte Webdienste stellen eine HTML-Analyselösung bereit. Diese ermöglicht es Entwicklern, den Inhalt einer Remote-HTML-Seite zu analysieren und die resultierenden Daten programmgesteuert verfügbar zu machen. Eine ausführlichere Erklärung finden Sie unter HTML-Analyse von ASP.NET-XML-Webdiensten.
So geben Sie einen Vorgang und Eingabeparameter an
Erstellen Sie ein WSDL-Dokument (Web Services Description Language), das in der Regel mit der Dateinamenerweiterung WSDL gespeichert wird. Der Inhalt des Dokuments muss aus gültigem XML-Code entsprechend dem WSDL-Schema bestehen. Als Prototyp können Sie ein WSDL-Dokument verwenden, das dynamisch für einen unter ASP.NET ausgeführten Webdienst generiert wird. Erstellen Sie eine Anforderung, in der das Argument ?wsdl an die URL des Webdiensts angefügt ist.
Geben Sie die Elemente an, die die Arbeitsweise jeder Webdienstmethode definieren, die HTML-Text analysiert. Dieser und der nächste Schritt erfordern Kenntnisse des WSDL-Formats.
Wenn die Analysemethode Eingabeparameter erfordert, definieren Sie Elemente, die diese Parameter darstellen, und ordnen diese Elemente dem Vorgang zu.
So geben Sie die Daten an, die für eine analysierte HTML-Seite zurückgegeben werden
- Fügen Sie ein namespacequalifiziertes <text>-XML-Element im <output>-Element hinzu, das über XPath /definitions/binding/operation/output. angezeigt wird. Das <operation>-Element stellt die Webdienstmethode dar, die analysierten HTML-Code abruft.
![]() |
---|
Der Vorgangsname in einer Bindung muss global eindeutig sein, da Wsdl.exe sonst nicht mit dem angegebenen Namespace ausgeführt werden kann. Damit werden Namenskonflikte mit anderen WSDL-Dateien verhindert, die in die gleiche Anwendung importiert werden. |
Fügen Sie für jedes Datenelement, das von der analysierten HTML-Seite zurückgegeben werden soll, in der Dienstbeschreibung <match>-XML-Elemente innerhalb des <text>-XML-Elements hinzu.
Wenden Sie Attribute auf das <match>-Element an. Die gültigen Attribute finden Sie in einer Tabelle im Thema "HTML-Analyse durch ASP.NET-XML-Webdienste".
So generieren Sie Clientproxycode für den Webdienst
- Führen Sie das Tool Wsdl.exe aus aus. Übergeben Sie die WSDL-Datei, die Sie als Eingabe erstellt haben.
Beispiel
Das folgende Codebeispiel veranschaulicht eine einfache Webseite, die die Tags <TITLE>
und <H1>
enthält.
<HTML>
<HEAD>
<TITLE>Sample Title</TITLE>
</HEAD>
<BODY>
<H1>Some Heading Text</H1>
</BODY>
</HTML>
Das folgende Codebeispiel ist eine Dienstbeschreibung. Der Inhalt der HTML-Seite wird analysiert, indem der innerhalb der Tags <TITLE>
und <H1>
stehende Textinhalt extrahiert wird. Im Codebeispiel wird die TestHeaders
-Methode für die GetTitleHttpGet
-Bindung definiert. Die TestHeaders
-Methode definiert zwei Datenelemente, die von der analysierten HTML-Seite in <match>-XML-Elementen zurückgegeben werden können: Title
und H1
analysieren den Inhalt der Tags <TITLE>
bzw. <H1>
.
<?xml version="1.0"?>
<definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:http="https://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="https://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soapenc="https://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="https://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s0="http://tempuri.org/"
targetNamespace="http://tempuri.org/"
xmlns="https://schemas.xmlsoap.org/wsdl/">
<types>
<s:schema targetNamespace="http://tempuri.org/"
attributeFormDefault="qualified"
elementFormDefault="qualified">
<s:element name="TestHeaders">
<s:complexType derivedBy="restriction"/>
</s:element>
<s:element name="TestHeadersResult">
<s:complexType derivedBy="restriction">
<s:all>
<s:element name="result" type="s:string" nullable="true"/>
</s:all>
</s:complexType>
</s:element>
<s:element name="string" type="s:string" nullable="true"/>
</s:schema>
</types>
<message name="TestHeadersHttpGetIn"/>
<message name="TestHeadersHttpGetOut">
<part name="Body" element="s0:string"/>
</message>
<portType name="GetTitleHttpGet">
<operation name="TestHeaders">
<input message="s0:TestHeadersHttpGetIn"/>
<output message="s0:TestHeadersHttpGetOut"/>
</operation>
</portType>
<binding name="GetTitleHttpGet" type="s0:GetTitleHttpGet">
<http:binding verb="GET"/>
<operation name="TestHeaders">
<http:operation location="MatchServer.html"/>
<input>
<http:urlEncoded/>
</input>
<output>
<text xmlns="https://microsoft.com/wsdl/mime/textMatching/">
<match name='Title' pattern='TITLE>(.*?)<'/>
<match name='H1' pattern='H1>(.*?)<'/>
</text>
</output>
</operation>
</binding>
<service name="GetTitle">
<port name="GetTitleHttpGet" binding="s0:GetTitleHttpGet">
<http:address location="https://localhost" />
</port>
</service>
</definitions>
Das folgende Codebeispiel stellt einen Teil der Proxyklasse dar, die von Wsdl.exe für die oben aufgeführte Dienstbeschreibung erstellt wurde.
' GetTitle is the name of the proxy class.
Public Class GetTitle
Inherits HttpGetClientProtocol
Public Function TestHeaders() As TestHeadersMatches
Return CType(Me.Invoke("TestHeaders", (Me.Url + _
"/MatchServer.html"), New Object(-1) {}),TestHeadersMatches)
End Function
End Class
Public Class TestHeadersMatches Public Title As String Public H1 As String
End Class
' GetTitle is the name of the proxy class.
public class GetTitle : HttpGetClientProtocol
{
public TestHeadersMatches TestHeaders()
{
return ((TestHeadersMatches)(this.Invoke("TestHeaders",
(this.Url + "/MatchServer.html"), new object[0])));
}
}
public class TestHeadersMatches
{
public string Title; public string H1;
}
Siehe auch
Referenz
Web Services Description Language-Tool (Wsdl.exe)
MatchAttribute
Konzepte
HTML-Analyse von ASP.NET-XML-Webdiensten
Weitere Ressourcen
.NET Framework Regular Expressions
XML-Webdienste, die ASP.NET verwenden
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.