Ich habe den Inhalt eines Datasets mithilfe eines XML-Serialisierers in xml exportiert. In einem separaten Projekt (PCL-Projekt). Ich versuche, die Xml-Datei in eine Objektklasse zu lesen, die Xdocuments Descendants verwendet, aber es gibt keine Werte zurück.Beim Laden von Daten aus xml.Descendants werden Nullwerte zurückgegeben.
Fehle ich etwas mit dem XNamespace im XML-Dokument?
Stream stream = assembly.GetManifestResourceStream("FatForWeightLossApp.Resources.IngredientExport.xml");
XDocument xml = XDocument.Load(stream);
Ingredient model = new Ingredient();
XNamespace ns = "http://tempuri.org/FatForWeightLossDataSet.xsd";
var ingredient = from r in xml.Descendants(ns + "IngredientTableDataTable")
select new
{
Id = r.Element("Id").Value,
Name = r.Element("Name").Value,
Calories = r.Element("Calories").Value,
Carbs = r.Element("Carbs").Value,
Fat = r.Element("Fat").Value,
Protein = r.Element("Protein").Value,
Cholesterol = r.Element("Cholesterol").Value,
Sodium = r.Element("Sodium").Value,
Sugars = r.Element("Sugars").Value,
Fibre = r.Element("Fibre").Value,
Type = r.Element("Grams").Value
};
foreach (var i in ingredient)
{
model.Id = Convert.ToInt32(i.Id);
model.Name = i.Name;
model.Calories = Convert.ToInt32(i.Calories);
model.Carbs = Convert.ToInt32(i.Carbs);
model.Fat = Convert.ToInt32(i.Fat);
model.Protein = Convert.ToInt32(i.Protein);
model.Cholesterol = Convert.ToInt32(i.Cholesterol);
model.Sodium = Convert.ToInt32(i.Sodium);
model.Sugars = Convert.ToInt32(i.Sugars);
model.Fibre = Convert.ToInt32(i.Fibre);
model.Type = i.Type;
database.Insert(model);
}
<?xml version="1.0" encoding="utf-8"?>
<IngredientTableDataTable>
<xs:schema id="FatForWeightLossDataSet" targetNamespace="http://tempuri.org/FatForWeightLossDataSet.xsd" xmlns:mstns="http://tempuri.org/FatForWeightLossDataSet.xsd" xmlns="http://tempuri.org/FatForWeightLossDataSet.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="FatForWeightLossDataSet" msdata:IsDataSet="true" msdata:MainDataTable="http_x003A__x002F__x002F_tempuri.org_x002F_FatForWeightLossDataSet.xsd_x003A_IngredientTable" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="IngredientTable">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:int" />
<xs:element name="Name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Calories" type="xs:decimal" />
<xs:element name="Carbs" type="xs:decimal" />
<xs:element name="Fat" type="xs:decimal" />
<xs:element name="Protein" type="xs:decimal" />
<xs:element name="Cholesterol" type="xs:decimal" />
<xs:element name="Sodium" type="xs:decimal" />
<xs:element name="Sugars" type="xs:decimal" />
<xs:element name="Fibre" type="xs:decimal" minOccurs="0" />
<xs:element name="Tbsp" type="xs:decimal" minOccurs="0" />
<xs:element name="Cups" type="xs:decimal" minOccurs="0" />
<xs:element name="Grams" type="xs:decimal" minOccurs="0" />
<xs:element name="Qty" type="xs:decimal" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:IngredientTable" />
<xs:field xpath="mstns:Id" />
</xs:unique>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<FatForWeightLossDataSet xmlns="http://tempuri.org/FatForWeightLossDataSet.xsd">
<IngredientTable diffgr:id="IngredientTable1" msdata:rowOrder="0">
<Id>1</Id>
<Name>Natural Yoghurt</Name>
<Calories>103.00</Calories>
<Carbs>7.00</Carbs>
<Fat>6.00</Fat>
<Protein>0.00</Protein>
<Cholesterol>0.00</Cholesterol>
<Sodium>0.00</Sodium>
<Sugars>0.00</Sugars>
<Fibre>0.00</Fibre>
<Grams>100.00</Grams>
</IngredientTable>
Richtig! Ja, ich war darüber verwirrt. Ich werde das, wenn ich nach Hause komme. Vielen Dank :-) – TallManCycles