My favorites | Sign in
Project Home
READ-ONLY: This project has been archived. For more information see this post.
Search
for
  Advanced search   Search tips   Subscriptions

Issue 57 attachment: CXMLDocument_AcceptEncoding.patch (1.7 KB)

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
diff -r ab6ba0207ff6 TouchXML/Common/Source/CXMLDocument.h
--- a/TouchXML/Common/Source/CXMLDocument.h
+++ b/TouchXML/Common/Source/CXMLDocument.h
@@ -41,6 +41,7 @@
}

- (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError;
+- (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithXMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithContentsOfURL:(NSURL *)inURL options:(NSUInteger)inOptions error:(NSError **)outError;

diff -r ab6ba0207ff6 TouchXML/Common/Source/CXMLDocument.m
--- a/TouchXML/Common/Source/CXMLDocument.m
+++ b/TouchXML/Common/Source/CXMLDocument.m
@@ -83,6 +83,11 @@

- (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError
{
+ return [self initWithData:inData encoding:NSUTF8StringEncoding options:inOptions error:outError];
+}
+
+- (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError
+{
if ((self = [super init]) != NULL)
{
NSError *theError = NULL;
@@ -103,7 +108,10 @@
xmlDocPtr theDoc = NULL;
if (inData && inData.length > 0)
{
- theDoc = xmlReadMemory([inData bytes], [inData length], NULL, NULL, XML_PARSE_RECOVER | XML_PARSE_NOWARNING);
+ CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(encoding);
+ CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc);
+ const char *enc = CFStringGetCStringPtr(cfencstr, 0);
+ theDoc = xmlReadMemory([inData bytes], [inData length], NULL, enc, XML_PARSE_RECOVER | XML_PARSE_NOWARNING);
}

if (theDoc != NULL)
Powered by Google Project Hosting