Wie Frage Staaten. Ich habe ein XML-Dokument (unten) und ich muss X_ScalarWebApi_DeviceInfo, die Namespace Urn definiert: Schemas-Sony-Com: AV. Leider führt dies zu einem Fehler: {System.NullReferenceException: Object reference not set to an instance of an object
. Ich bin hauptsächlich am ServiceList-Element interessiert, aber es funktioniert nicht so gut. Plattform - Windows 10 Mobil. Irgendwelche Ideen?XDocument get-Element, das seinen eigenen Namespace definiert
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
<friendlyName>ILCE-6000</friendlyName>
<manufacturer>Sony Corporation</manufacturer>
<manufacturerURL>http://www.sony.net/</manufacturerURL>
<modelDescription>SonyDigitalMediaServer</modelDescription>
<modelName>SonyImagingDevice</modelName>
<UDN>uuid:000000001000-1010-8000-62F1894EE7BE</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-sony-com:service:ScalarWebAPI:1</serviceType>
<serviceId>urn:schemas-sony-com:serviceId:ScalarWebAPI</serviceId>
<SCPDURL/>
<controlURL/>
<eventSubURL/>
</service>
</serviceList>
<av:X_ScalarWebAPI_DeviceInfo xmlns:av="urn:schemas-sony-com:av">
<av:X_ScalarWebAPI_Version>1.0</av:X_ScalarWebAPI_Version>
<av:X_ScalarWebAPI_ServiceList>
<av:X_ScalarWebAPI_Service>
<av:X_ScalarWebAPI_ServiceType>guide</av:X_ScalarWebAPI_ServiceType>
<av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL>
<av:X_ScalarWebAPI_AccessType/>
</av:X_ScalarWebAPI_Service>
<av:X_ScalarWebAPI_Service>
<av:X_ScalarWebAPI_ServiceType>accessControl</av:X_ScalarWebAPI_ServiceType>
<av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL>
<av:X_ScalarWebAPI_AccessType/>
</av:X_ScalarWebAPI_Service>
<av:X_ScalarWebAPI_Service>
<av:X_ScalarWebAPI_ServiceType>camera</av:X_ScalarWebAPI_ServiceType>
<av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL>
<av:X_ScalarWebAPI_AccessType/>
</av:X_ScalarWebAPI_Service>
</av:X_ScalarWebAPI_ServiceList>
</av:X_ScalarWebAPI_DeviceInfo>
</device>
</root>
Ah, der Code:
XDocument xDoc = XDocument.Parse(xml_text);
//var av = xDoc.Root.GetDefaultNamespace();//.Attribute("xmlns");//
XNamespace av = "urn:schemas-sony-com:av";
System.Diagnostics.Debug.WriteLine(av);
<XElement> api_list = (List<XElement>)xDoc.Element(av + "X_ScalarWebAPI_DeviceInfo").Elements();
== == EDIT Nun, beide Lösungen waren in Ordnung, so dass ich upvoting ein und Kennzeichnung als die andere Antwort: P Es erwähnt wurde dass die Lösung, die nur einen 'lokalen Namen' verwendet, zu falsch positiven Suchergebnissen führen könnte, also verwende ich die erste, um sicher zu sein. Danke für die Hilfe!
Wo ist der Code, der den Fehler erzeugt? –
Ich habe vergessen, zu ad ,, jetzt ist es in;) Wie Sie sehen können, habe ich viele Optionen ausprobiert, die ich im Internet sah –
Ihre 'xDoc' haben nur ein Kindelement'', also rufe '.Element (av +" X_ScalarWebAPI_DeviceInfo ")' return 'null'. –
PetSerAl