PowerShell XML verarbeitung, WoW Armory auslesen

dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

ich beschäftige mich gerade mit der XML verarbeitung via PowerShell
und hatte die Idee das WoW Armory, das Daten über Gilden und Charaktere via XML zur Verfügung stellt auszulesen.

Mein erster Versuch einen RSS Feed einzulesen funktionierte problemlos:
Code:
$xmlData = New-Object XML
$xmlData.Load("http://www.tutorials.de/external.php?type=RSS2")
$xmlData.rss.channel.item
Der RSS Feed wird eingelesen und im Anschluss werden die jeweiligen Einträge ausgegeben, ganz rudimentär zum Test.

Mein zweiter Versuch und damit meine Idee Daten aus dem Armory auszulesen schlug leider fehl.
Code:
$xmlData = New-Object XML
$xmlData.Load("http://eu.wowarmory.com/character-sheet.xml?r=Aegwynn&n=Pyramus")

Sobald die Methode Load aufgerufen wird erhalte ich folgende Fehlermeldung:

Ausnahme beim Aufrufen von "Load" mit 1 Argument(en): "Das erwartete DTD-Markup wurde nicht gefunden. Zeile 1, Position 1."
Bei Zeile:1 Zeichen:14
+ $xmlData.Load <<<< ("http://eu.wowarmory.com/character-sheet.xml?r=Aegwynnn=Pyramus")
+ CategoryInfo : NotSpecified: :)) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException


Kommt die PowerShell in diesem Fall mit den Argumenten ?r=Aegwynn&n=Pyramus nicht zurecht oder an was könnte es liegen, dass das XML Dokument nicht geladen werden kann?

Wenn man die URL über den Browser aufruft bekommt man eine Fehlermeldung "Das sind nicht die Seiten die Ihr sucht[...]" zu sehen. Das liegt daran, dass Blizzard das Armory redesigned hat und die Seiten jetzt unter http://eu.battle.net/wow/de zu finden sind. Allerdings werden dort noch keine XML Daten zur Verfügung gestellt.

Sieht man sich also den Quelltext an, erkennt man, dass nach wie vor die XML Daten bereit gestellt werden.

Dass das Auslesen der Daten funktioniert weiß ich da das ganze in der Praxis mit PHP und SimpleXML durchgeführt wird.


Über Tipps und Anregungen wie ich diese XML Daten auslesen kann würde ich mich sehr freuen.


Mh, gerade Bemerkt, dass es womöglich besser unter CodersTalk aufgehoben wäre. Entschuldigung :)
 
Zuletzt bearbeitet:

Nico Graichen

Erfahrenes Mitglied
In Coders Talk verschoben. Das nächste Mal solch einen Hinweis via "Beitrag melden" melden, da siehts ein Admin / Mod eher
 

dark_ghost

Erfahrenes Mitglied
Hallo Felix,

ja seit dem erscheinen von Cataclysm hat Blizzard auch die Seiten des Armory aktualisiert.
Die neuen Seiten sind, wie du schon richtig geschrieben hast, unter
http://eu.battle.net/wow/de/character/<server_name>/<character_name>/simple zu erreichen.

Im neuen Armory werden allerdings, noch, keine XML Daten zur Verfügung gestellt.
Aus diesem Grund sind die XML Daten der Charaktere und Gilden nach wie vor unter dem alten Armory-Link zu erreichen.

http://eu.wowarmory.com/character-sheet.xml?r=Aegwynn&n=Pyramus

Ruft man diese Seite auf, wird einem eine Fehlerseite angezeigt. Das ist nicht weiter schlimm, denn wenn man sich den Quelltext der Seite ansieht, stellt man fest, dass die Seite trozdem die korrekten XML Daten liefert, die dann wiederum verarbeitet werden können.

All das habe ich aber in meinem ersten Post auch so erläutert ;)


Falls jemand einen Denkanstoß für mich hat, immer her damit. Noch habe ich keine Lösung für das Problem gefunden.

Danke und viele Grüße
 
Zuletzt bearbeitet:

Flex

(aka Felix Jacobi)
Sorry, hätte besser lesen sollen...

Anscheinend kriegt der PS Browser einen anderen Text... Hier mal mit dem Webclient ausgelesen:

Code:
Cannot convert value "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link href="/favicon.ico" rel="shortcut icon">
<title>The World of Warcraft Armory</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta content="The World of Warcraft Armory is a vast searchable database of in
formation for World of Warcraft - taken straight from the real servers. It is t
he most comprehensive and up-to-date database on the characters, arena teams, g
uilds, items, and faction rewards of World of Warcraft in existence." name="des
cription">
<script src="/_js/functions.js?v2" type="text/javascript"></script>
<style media="screen, projection" type="text/css">
        @import "/_css/decommission.css";
        @import "/_css/_lang/en_us/language.css";
        @import "/_css/_region/eu/region.css";
    </style>
</head>
<body class="en_us">
<div class="content">
<div class="title">
<h1>These aren't the Armory pages you're looking for.</h1>
</div>
<div class="text">
<p>As part of our ongoing community site transition, the Armory has moved to it
s new home on the redesigned World of Warcraft community website. Please visit
<a href="http://www.battle.net/wow">http://www.battle.net/wow</a> to visit the
new and improved Armory, and also make sure to update your bookmarks.</p>
<p>We apologize for the inconvenience. Rest assured that many goblins* were cas
t into the fiery abyss of the Molten Core for this transgression!</p>
<p class="footnote">*No goblins were harmed in the making of this webpage or ca
st into the fiery abyss of the Molten Core.</p>
</div>
<a class="button" href="http://eu.battle.net/wow/en/" id="button">Continue</a><
a class="screens" href="http://eu.battle.net/wow/en/" id="screens"></a>
<table border="0" cellpadding="0" cellspacing="0" class="logos">
<tr>
<td><a class="blizzlogo" href="http://www.blizzard.com" target="_blank"></a></t
d><td><a class="rating en_us" href="http://www.esrb.org/ratings/ratings_guide.j
sp" target="_blank"></a></td>
</tr>
</table>
<p class="copyright">&copy;2010 Blizzard Entertainment, Inc. All rights reserve
d</p>
</div>
<script type="text/javascript">
        updateButtonLink();
    </script>
</body>
</html>
" to type "System.Xml.XmlDocument". Error: "The 'meta' start tag on line 7 does
 not match the end tag of 'head'. Line 14, position 3."
At line:1 char:10
+ $xml <<<<  = $wc.DownloadString($address)
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMet
   adataException
    + FullyQualifiedErrorId : RuntimeException
 
Zuletzt bearbeitet von einem Moderator:

KaiBone

Mitglied
Die Powershell bekommt nur den Code der tatsächlich angezeigt wird.
Beim Aufruf wird der Inhalt der XML Datei mitgesendet und "nachträglich" vom Server noch eine komplette HTML-Seite, nachvollziehen kann man das über die Netzwerkkonsole von Firebug.

Die nächste Möglichkeit wäre nur den HTML-Code der neuen Seite in PS zu prasen. Was allerdings relativ aufwendig wäre bei dem schlecht formatieren Code.
 

dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

vielen Dank euch beiden für eure Antworten. Jetzt verstehe ich was hier passiert.
Guter Tipp mit der Netzwerkkonsole von Firebug.
Den HTML Code zu parsen halte ich auch nicht für effektiv, da werd ich mir wohl was anderes überlegen müssen.

Danke und viele Grüße