![]() |
Der Objektverweis wurde nicht auf eine Objektinstanz festgel
Ich habe ein ganz mysteriöses Problem:
Folgende Klasse:
Code:
Und der Aufruf:
// WebsiteItem
public class WebsiteItem { private XPathDocument _pathDoc; private Boolean _isPrimary; private string _url; #region Getter/Setter public Boolean IsPrimary { get { return _isPrimary; } set { _isPrimary = value; } } public string URL { get { return _url; } set { _url = value; } } #endregion public WebsiteItem(XPathDocument PathDoc) { _pathDoc = PathDoc; } public void GetDetails() { XPathNavigator nav = _pathDoc.CreateNavigator(); XPathNodeIterator nodeIter = nav.Select("businessRelationship/businessSupplier/company/websiteList/*"); if (nodeIter != null) { while (nodeIter.MoveNext()) { if (nodeIter.Current.HasAttributes) { _isPrimary = Convert.ToBoolean(nodeIter.Current.GetAttribute("primary", "")); } //Debug.WriteLine("==> " + nodeIter.Current.SelectSingleNode("website").Value); _url = nodeIter.Current.SelectSingleNode("website").Value; } } } }
Code:
So, kommentiere ich die zeile _url = ... aus geht alles wunderbar. Lasse ich sie drinne kommt die fehlermeldung wie im Titel: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt". Kann mir das mal bitte jemand erklären?
_wi = new WebsiteItem(_pathDoc);
_wi.GetDetails(); _websiteList.Add(_wi); Ich habe eine Klasse public class AddressItem die identisch ist mit der obigen nur eben andere XMl-Pfade. Dort habe ich das Problem nicht. Ich kann keinen Unterschied festestellen weder in der Implementierung noch beim Aufruf. |
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
Hau da doch mal nen Breakpoint rein (genau auf der Zeile) und guck Dir mal an, welches der Elemente denn offensichtlich null ist.
Im Prinzip kommen ja nur nodeIter, sein Current und der SelectedNode in Frage. Ich tippe am ehesten auf den Node. Gibts diesen "website" Knoten im Xml überhaupt? |
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
Das habe ich schon probiert. In den Hintfenster beim Debuggen kann ich sogar den Wert sehen, er wird also richtig ausgelesen.
|
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
Bei wirklich jedem Schleifendurchlauf?
|
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
Gleich beim ersten.
Es sieht jetzt so aus:
Code:
Ach so, was ich vergass zu erwähnen, die eingebaute Abfrage ist immer null. Ist wahrscheinlich ein gaaaaanz dooooofer Fehler.
public void GetDetails()
{ XPathNavigator nav = _pathDoc.CreateNavigator(); XPathNodeIterator nodeIter = nav.Select("businessRelationship/businessSupplier/company/websiteList/*"); if (nodeIter != null) { while (nodeIter.MoveNext()) { if (nodeIter.Current.HasAttributes) { _isPrimary = Convert.ToBoolean(nodeIter.Current.GetAttribute("primary", "")); } if (nodeIter.Current.SelectSingleNode("website") != null) { _url = nodeIter.Current.Value; } } } } Und die XML:
XML-Code:
Wie gesagt, der gleiche Code funktioniert bei der addressList6e.
<businessRelationship id="1">
<businessSupplier id="1"> <company> <companyName>DATAWERK</companyName> <websiteList> <website primary="true">www.datawerk.de</website> <website>www.datawerk.com</website> </websiteList> <addressList> <address primary="true" id="1"> <street>Friedrich-Ebert-Straße</street> <number>4</number> <city>Kassel</city> <zipCode>34117</zipCode> <state>Testbundesland</state> <country>Testland</country> </address> </addressList> <landlineNumberList> <landlineNumber primary="true" id="1"> <countryCode>+49</countryCode> <areaCode>561</areaCode> <localNumber>7016470</localNumber> </landlineNumber> </landlineNumberList> </company> </businessSupplier> </businessRelationship> |
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
Was willst du mit dem zweiten XPath bezwecken :gruebel: ? Vom ersten bekommst du ja schon alle website-Elemente und in diesen willst du nun nochmal nach einem website-Kind suchen? Ich würde schätzen: Lass das if einfach weg. Innerhalb der Schleife ist Current ja auf jeden Fall gültig.
|
Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes
@ Khabarakh: :wall:
Ok, Jungs. Können wir das auf die Hitze schieben? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz