Avatar billede the_raze Nybegynder
11. februar 2008 - 11:43 Der er 1 løsning

Problemer med load af XML til DataSet

hejsa,

Jeg står og har lidt XML problemer som jeg håber i kan hjælpe mig med :)

Jeg stod og havde lavet en løsning, som læste noget XML ind fra en fil - og dette fungerede som sådan også fint nok (herunder ses dette eksempel):

ataSet XmlDataSet = new DataSet();
                XmlDataSet.ReadXml(HttpContext.Current.Server.MapPath("~/test.xml"));
DataTable XmlDataTable = new DataTable();
XmlDataTable = XmlDataSet.Tables["Fields"];
DataTable NewXmlTable = new DataTable("Results");
DataSet NewXmlFile = new DataSet();
DataRow NewXmlRow = NewXmlTable.NewRow();
NewXmlTable.Columns.Add("Form");
NewXmlRow[NewXmlTable.Columns[0].Caption] = xmlForm;

for (int i = 0; i < XmlDataTable.Rows.Count; i++)
{
.
.
.
}

Det fungerer som sagt fint!

Jeg er nu kommet i den situation, at jeg skal gemme min XML i en database. Dette har jeg også gjort, men når det så skal læses ud igen i ovenstående tilfælde, så volder det mig problemer.

Jeg læser det ud i et XmlDataDocument (form er min FormController, som står for at hente ting ud):
XmlDataDocument XmlFromDB = new XmlDataDocument();
XmlFromDB.LoadXml(form.GetFormXmlById(Convert.ToInt32(formId)));

Det læser XML ud på formen:
<NewDataSet>
  <Fields>
    <Control>TextBox</Control>
    <Data>String</Data>
    <Required>Yes</Required>
    <Order>1</Order>
    <Label>Navn</Label>
    <Id>Navn</Id>
    <Text />
  </Fields>
  <Fields>
    <Control>TextBox</Control>
    <Data>String</Data>
    <Required>Yes</Required>
    <Order>2</Order>
    <Label>Adresse</Label>
    <Id>Adresse</Id>
    <Text />
  </Fields>
  <Fields>
    <Control>TextBox</Control>
    <Data>Integer</Data>
    <Required>Yes</Required>
    <Order>3</Order>
    <Label>Mobil nr.</Label>
    <Id>mobil</Id>
    <Text />
  </Fields>
</NewDataSet>

Jeg har så ændret linien, fra forrige eksempel til:
XmlDataTable = XmlFromDB.DataSet.Tables["Fields"];

problemet opstår dog når den kommer ned i for-løkken. Der siger den at "objekt referencen ikke er indstillet til forekomsten af et objekt".

Nu er det så jeg gerne vil høre, hvad jeg gør galt?
Avatar billede the_raze Nybegynder
11. februar 2008 - 18:35 #1
Jeg fandt ud af at løse problemet :)

Slulle bare bruge en XmlReader og så læse fra denne til mit DataSet :)

XmlDocument XmlFromDB = new XmlDocument();
String xml = form.GetFormXmlById(Convert.ToInt32(formId));

XmlFromDB.LoadXml(xml);
XmlReader reader = XmlReader.Create(new StringReader(XmlFromDB.InnerXml));

DataSet XmlDataSet = new DataSet();
XmlDataSet.ReadXml(reader);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester