Gå til innhold

loadXml setter inn vilkårlige linjeslutt


Anbefalte innlegg

Skrevet

Jeg skal levere xmlfiler jeg mistenker blir behandlet som linjedata hos mottaker. Bruker vb.net, og loadXml for å få pene innrykk i filen. Jeg har f eks noen tomme elementer som skal leveres på en linje :

<acs></acs>

Siden det er endel løkkelogikk innimellom nodene, leser jeg først hele dokumentet inn i en streng. Deretter bruker jeg myXml.loadXml(myString) for å skape xml-dokumentet. Problemet er at når jeg åpner resultatfilen i Notepad har det sneket seg inn linjeslutt mellom taggene i elementet, og det avviker fra spec. Kan jeg få loadXml til å la være å sette inn linjeslutt mellom tagger i tomme elementer?

 

F eks :

myXml.loadXml("<test>hei</test>" + vbNewLine + "<acs></acs>")

myXml.save("testfile.xml")

 

gir følgende uønskede resultat :

<test>hei</test>

<acs>

</acs>

Videoannonse
Annonse
Skrevet (endret)

Ville ikke bygget XML i strings... Du kan evt. se på å sette opp en XmlTextWriter mot en fil, og se hva settings du har på den, går ut fra det er noe trøbbel i settings/format på default xmlwriter'en der.

 

Anyway, XElement er måten å bygge xml i kode nå om dagen. I VB har du xml-literaler også til sånt (implisitte XElement):

Dim doc = <root>
             <test>hei</test>
             <acs></acs>
         </root>
Da du ut:
<root>
 <test>hei</test>
 <acs></acs>
</root>

Evt. bygge mer dynamisk:
Dim doc = <root/>
doc.Add(New XElement("test", "hei"))
doc.Add(<acs></acs>)

 

 

 

Jeg skal levere xmlfiler jeg mistenker blir behandlet som linjedata hos mottaker.

Høres ut som en veldig Bad Idea ™

 

 

Edit: XmlDocument.PreserveWhitespace er kanskje det du ser etter.

Endret av MailMan13
Skrevet (endret)

Jeg skal levere xmlfiler jeg mistenker blir behandlet som linjedata hos mottaker. Bruker vb.net, og loadXml for å få pene innrykk i filen. Jeg har f eks noen tomme elementer som skal leveres på en linje :

<acs></acs>

Siden det er endel løkkelogikk innimellom nodene, leser jeg først hele dokumentet inn i en streng. Deretter bruker jeg myXml.loadXml(myString) for å skape xml-dokumentet. Problemet er at når jeg åpner resultatfilen i Notepad har det sneket seg inn linjeslutt mellom taggene i elementet, og det avviker fra spec. Kan jeg få loadXml til å la være å sette inn linjeslutt mellom tagger i tomme elementer?

 

F eks :

myXml.loadXml("<test>hei</test>" + vbNewLine + "<acs></acs>")

myXml.save("testfile.xml")

 

gir følgende uønskede resultat :

<test>hei</test>

<acs>

</acs>

Det er fullstendlig lovlig XML, så ser ikke problemet. Hvis de ikke er istand til å parse XML på en skikkelig måte i andre enden har de et vanvittig stort problem som heter "inkompetanse", og dette er neppe det første, eller største problemet du kommer til å støte på.

Endret av GeirGrusom
Skrevet

Takker. Prøvde meg med XElement men ramlet inn i .net 4 og linq. Jeg er desverre belemret med Server 2003 og IIS6 på et svært lukket domene, så gav heller opp og konverterte skiten til StreamWriter med lassevis av vbTab og vbNewLine. Får heller slette navnet mitt fra kompilasjonen i tilfelle noen åpner den før jeg får tid til å konvertere :)

 

Angående å be bestiller følge standarder, så tør jeg ikke det. Når tid er penger blir prinsipper kanonføde.

Skrevet (endret)

Noe sier meg at bestiller har skrevet en egen XML parser ^^

 

Lykke til videre! Jeg forestiller meg at dette ikke er første, eller siste gang du møter på rariteter som bestiller bedriver.

Endret av GeirGrusom

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...