Ich versuche, Aktivität in Objekttyp Aktivitäten nach dem RFC (konvertierte XSD zu C# -Klasse mit der XSD in der RFC) zu deserialisieren, aber es scheint, dass ich Probleme mit der Aktivität XML-Element, da es einen inneren Namensraum im Attribut enthält.PIDF XML Deserialisierung nach RFC 3863
XML:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:[email protected]" xmlns:e="urn:ietf:params:xml:ns:pidf:status:rpid" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:ce="urn:cisco:params:xml:ns:pidf:rpid" xmlns:sc="urn:ietf:params:xml:ns:pidf:servcaps">
<dm:person>
<status>
<basic>open</basic>
</status>
<e:activities>
</e:activities>
</dm:person>
</presence>
ich dies in eine Präsenzobjekt am Deserialisieren, den ersten (presence.Any [0]) nehmen, und dies in einer Person, Objekt deserialisieren, ist alles so weit in Ordnung. Aber dann möchte ich das Aktivitätselement von Person zu nehmen, und deserialisieren dies:
person.Any.SingleOrDefault(x => x.LocalName == "activities")
Aber jetzt ist die XML dieses Objekts wie folgt aussieht:
<e:activities xmlns:e="urn:ietf:params:xml:ns:pidf:status:rpid">
</e:activities>
Und wenn ich versuche, dies in eine Tätigkeit deserialisieren Objekt als von XSD in RFC3863, ich bin mit der Endung der folgenden Fehlermeldung:
Message "<activities xmlns='urn:ietf:params:xml:ns:pidf:status:rpid'> was not expected."
wie kann ich deserialisieren XmlElements, die einen inneren Namespace wie folgt enthält ??
UPDATE 23-11-17 (Elemente, die leer ist):
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:pp="urn:ietf:params:xml:ns:pidf:person" xmlns:es="urn:ietf:params:xml:ns:pidf:rpid:status:rpid-status" xmlns:ep="urn:ietf:params:xml:ns:pidf:rpid:rpid-person" entity="sip:[email protected]">
<pp:person>
<status>
<ep:activities>
<ep:away/>
</ep:activities>
</status>
</pp:person>
<note>Unavailable</note>
<tuple id="6001">
<contact priority="1">sip:[email protected]</contact>
<status>
<basic>closed</basic>
</status>
</tuple>
</presence>
Problem:
<ep:away xmlns:ep="urn:ietf:params:xml:ns:pidf:rpid:rpid-person" />
Dateneinheiten:
[XmlType(TypeName = "activities", Namespace = "urn:ietf:params:xml:ns:pidf:rpid:rpid-person")]
public class Activities : activities
{
[XmlElement(Namespace = "urn:ietf:params:xml:ns:pidf:rpid:rpid-person")]
public ItemsChoiceType State { get; set; }
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:ietf:params:xml:ns:pidf:rpid", IncludeInSchema=false)]
public enum ItemsChoiceType {
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("##any:")]
Item,
/// <remarks/>
appointment,
/// <remarks/>
away,
/// <remarks/>
breakfast,
/// <remarks/>
busy,
/// <remarks/>
dinner,
/// <remarks/>
holiday,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("in-transit")]
intransit,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("looking-for-work")]
lookingforwork,
/// <remarks/>
meal,
/// <remarks/>
meeting,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("on-the-phone")]
onthephone,
/// <remarks/>
other,
/// <remarks/>
performance,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("permanent-absence")]
permanentabsence,
/// <remarks/>
playing,
/// <remarks/>
presentation,
/// <remarks/>
shopping,
/// <remarks/>
sleeping,
/// <remarks/>
spectator,
/// <remarks/>
steering,
/// <remarks/>
travel,
/// <remarks/>
tv,
/// <remarks/>
unknown,
/// <remarks/>
vacation,
/// <remarks/>
working,
/// <remarks/>
worship,
}
Schreiben Sie die XML-Klasse, die Sie versuchen, in deserialisieren. – jdweng
Hier in Pastebin hinzugefügt, da der Quellcode ziemlich groß ist: https://pastebin.com/Vj0XMK0d – grmihel
Ich werde heute ein wenig später schauen. – jdweng