19. juli 2004 - 15:01Der er
36 kommentarer og 1 løsning
Indsætte data ind i Xml
Hvordan sætter man noget ny data ind i slutnngen på et Xml-dokument? Den måde, jeg har fundet ud af indtil videre, sletter hele dokumentet, så man faktisk skal skrive dokumentet igen helt fra begyndelsen af. Her er min kode: private void Button1_Click(object sender, System.EventArgs e) { string tid=String.Format(DateTime.Now.Day + DateTime.Now.Month + "Kl" + DateTime.Now.Hour + DateTime.Now.Minute); XmlTextWriter writer=new XmlTextWriter("C:\\Inetpub\\wwwroot\\New\\GuestBook.xml", System.Text.Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer. //System.Diagnostics.Debug.Write("tid: "+tid+ " tekst et: "+ TextBox1.Text); writer.WriteElementString(tid, TextBox1.Text);// XmlConvert.ToString(TextBox1.Text) writer.Close(); }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
og når jeg kører det, så skriver den: " Tegnet '2', hexadecimal værdi 0x32, kan ikke begynde med et navn. Linje 2, position 2. Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden. Detaljer om undtagelse: System.Xml.XmlException: Tegnet '2', hexadecimal værdi 0x32, kan ikke begynde med et navn. Linje 2, position 2. Kildefejl: Linje 80: writer.Close();*/ Linje 81: XmlDocument doc = new XmlDocument(); Linje 82: doc.Load("C:\\Inetpub\\wwwroot\\New\\GuestBook.xml"); Linje 83: XmlNode add = doc.CreateElement(tid); Linje 84: add.AppendChild(doc.CreateTextNode(TextBox1.Text)); "
Ja, men det er da mærkeligt, når XmlTextWriter'en ikke havde noget imod det. Nå, men for at komme om ved det problem, kunne man sætte klientnavnet ind forest i strengen. Men ved du, hvordan man kan få klientnavnet med gennem et button-click?
Hmm...jeg har lige forsøgt med linien: XmlNode add = doc.CreateElement("tid "+tid); men fejlen kommer stadig. Er der noget generelt forkert med min opbygnng af koden da?
Jeg har lige prøvet med en streng kun - men den brokker sig stadig. Men den linie i fejlmeddelelsen, som er farvet rød, er: "doc.Load("C:\\Inetpub\\wwwroot\\New\\GuestBook.xml");" så mon ikke det er syntaxen, den er gal med, og ikke det, som jeg prøver at sætte ind i selve xmldokumentet?
* Names can contain letters, numbers, and other characters * Names must not start with a number or punctuation character * Names must not start with the letters xml (or XML or Xml ..) * Names cannot contain spaces
Take care when you "invent" element names and follow these simple rules:
Any name can be used, no words are reserved, but the idea is to make names descriptive. Names with an underscore separator are nice.
Examples: <first_name>, <last_name>.
Avoid "-" and "." in names. For example, if you name something "first-name," it could be a mess if your software tries to subtract name from first. Or if you name something "first.name," your software may think that "name" is a property of the object "first."
Element names can be as long as you like, but don't exaggerate. Names should be short and simple, like this: <book_title> not like this: <the_title_of_the_book>.
XML documents often have a corresponding database, in which fields exist corresponding to elements in the XML document. A good practice is to use the naming rules of your database for the elements in the XML documents.
Non-English letters like éòá are perfectly legal in XML element names, but watch out for problems if your software vendor doesn't support them.
The ":" should not be used in element names because it is reserved to be used for something called namespaces (more later).
XmlFilen ser sådan ud: <?xml version="1.0" encoding="utf-8"?> <besked> <26Kl1450>abc</26Kl1450> </besked>
Jeg prøvede at rette doc.Load("C:\\Inetpub\\wwwroot\\New\\GuestBook.xml"); i koden til doc.LoadXml("C:\\Inetpub\\wwwroot\\New\\GuestBook.xml"); og nu giver den en anden fejl:
Detaljer om undtagelse: System.Xml.XmlException: Dataene på rodniveau er ugyldige. Linje 1, position 1.
Den skriver fejl ved den linie hvis der er fejl i indholdet af xml filen, f.eks. hvis du har et element der starter med et nummer som navn. Ved ikke om du så at Arne også tilføjet "tid" i starten af dit tids-element.
Jeg slettede elementet <26k...> og får nu fejlen: Detaljer om undtagelse: System.Xml.XmlException: Dataene på rodniveau er ugyldige. Linje 1, position 1.
Det skal kun være Load. Og grunden til fejlen var sikkert, at der allerede var nogle elementer ine i Xmldokumentet, som ikke var gyldige (begyndte med tal). Men jeg vil gerne have den aktuelle tid ind også. Kan jeg ikke på den ind som attribut i <tid>? Og hvordan gør jeg så det?
Ja, et virker da...selvom det ikke ser for kønt ud: <tid d2p1:tid="" xmlns:d2p1="19_7_Kl_16_43">q</tid> Hvorfor kommer "d2p1:" og "" xmlns:d2p1="" med?
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.