[ASP.NET] ResourceFile: fouten in file naar schrijven bestan

Pagina: 1
Acties:

  • Arethusa
  • Registratie: December 2003
  • Laatst online: 13-02 13:48

Arethusa

Niet die server

Topicstarter
Naar aanleiding van een ander topic betreffende resourcefiles heb ik geprobeerd of ik om te beginnen strings naar een resource bestand kan schrijven. Ik voeg het bestand toe via mijn solution explorer in Visual Studio 2005 Ik maak daar als test gebruik van de code die ik op

http://samples.gotdotnet.com/quickstart/howto/doc/readwriteresources.aspx gevonden heb.
Ik heb de code licht aangepast. De regel:
Visual Basic .NET:
1
Dim rw As ResourceWriter = New ResourceWriter("Greeting.resources") 

is in mijn code:
Visual Basic .NET:
1
Dim rw As ResourceWriter = New ResourceWriter(Server.MapPath("Strings.resx")) 

Waarbij ik mijn via het project toegevoegde resource file benader. Aan dit bestand is niets veranderd na het toevoegen.

Gebruik ik deze code:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
' Create a .resources file, specifying a new resources file 
Dim rw As ResourceWriter = New ResourceWriter(Server.MapPath("Strings.resx")) 

' add some strings to the file 
rw.GetType() 
rw.AddResource("Greeting", "Welcome to Microsoft .Net Framework!") 
rw.AddResource("PasswordException", "Sorry, that is not the correct password.") 
rw.AddResource("Purchase", "Please select an item to purchase from the store:") 
rw.AddResource("Goodbye", "Thank you for visiting Microsoft .Net Framework!") 

' create and write to the file 
rw.Generate() 

' close the resourcewriter. Note that if you close without calling generate 
' first, the generate method is implicitly called 
rw.Close() 

End Sub 

Dan resulteert dat in een fout in strings.resx: Invalid token 'Text' at root level of document. Ik zie in de ErrorList van Visual Studio 101 errors staan waaronder:
- ResX file Data at the root level is invalid. Line 1, position 1. cannot be parsed.
- Character ' ', hexdecimal value 0x1 is illegal in XML documents.
- Invalid token 'Text' at root level of document.

Ikzelf denk aan een verkeerd geparst character. De code view van de resource file bevat aan het begin een serie rare characters waarna de regel: System.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet komt. Na het blokje komen weer een aantal rare characters met daarna weer gedeeltes van de strings die ik via mijn code opgeef.

Standaard xml bestand (excuses voor de hoeveelheid tekst, ik weet niet wat van belang kan zijn)
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>


Wat ik al geprobeerd heb:
- Gezocht op Got & Google, niets gevonden wat een oplossing brengt
- Meerdere malen het bestand in project toegevoegd
- Xml Version=1.0.3300.0 gebruiken ipv Version=2.0 in resource bestand
- Wat ik gehoord heb is dat het bestand in unicode opgeslagen moet zijn ipv ASCII, maar hierover kan ik in mijn bestand niets weer vinden. Ik ga ervan uit dat dit klopt.

Weet iemand wat hier aan de hand is?

[ Voor 13% gewijzigd door Arethusa op 05-07-2006 13:32 ]

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Nou heb ik zelf nog nooit zoiets gedaan, maar misschien een ideetje voor je om verder te zoeken: in het origineel zie ik als filenaam .resources staan, jij gebruikt .resx. Een .resources is een binary-file en een .resx is een xml-file. Misschien moet je andere functies gebruiken om naar een xml te schrijven?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:19
De resource-writer class schrijft zowiezo een binary file weg, en geen xml file.

En wat wil de topicstarter eigenlijk aangeven met dat XSD Dat hij gepost heeft ?

https://fgheysels.github.io/


  • Arethusa
  • Registratie: December 2003
  • Laatst online: 13-02 13:48

Arethusa

Niet die server

Topicstarter
@Cowgirl, je hebt gelijk, ik ging echter vanuit dat het om hetzelfde ging. Meer onderzoek is nodig blijkbaar.

@Whoami, ik dacht hiermee aan te kunnen tonen dat er geen fouten in mijn bestand zitten. Echter blijkt uit de opmerking van Cowgirl dat ik op het verkeerde pad zit.

Het idee was om vanuit de code strings in het bestand te schrijven. Normaliter gebeurt dit via Generate localresources waarbij men resources van het lokale bestand aanmaakt. Mijn bedoeling was om bepaalde strings in te voeren ipv een hele pagina.
Ik zoek nog even verder uit hoe het een en ander in elkaar steekt :)

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:19
Of je nu resx of resources als extensie gebruikt, dat blijft hetzelfde.
De ResourceWriter genereert gewoon een binary resource file, en geen xml file.

Als je deze in een xml formaat wilt schrijven, moet je de ResXResourceWriter class gebruiken.

https://fgheysels.github.io/