Re: [xml] How to create an ISO-8859-1 encoded xml file?



On Wed, Apr 11, 2001 at 12:13:49AM +0200, Mark Ziegler wrote:
Hi,

actually I'm tring to produce a XML-file using libxml2-2.3.5:

<?xml version="1.0" encoding="ISO-8859-1"?>
<info>abc</info>


I wrote the following code for this job:

void DoIt(void)
{
  xmlDocPtr doc;
  xmlNodePtr n;

  doc = xmlNewDoc("1.0");
  n = xmlNewNode(NULL, "info");
  xmlNodeSetContent(n, "abc");
  xmlDocSetRootElement(doc, n);
  xmlSaveFileEnc("test.xml",doc,"ISO-8859-1");
  xmlFreeDoc(*pDoc);
}

But the result ist a runtime-error message:
"xmlSaveFileEnc: document not in UTF8 "

Why this? I think, all charactars are hold internally as UTF8?

  I think I found the bug:
    xmlNewDoc forgot to set up the charset value of doc 

 I added a new option to xmllint to test this kind of problems
called --auto :

        --auto : generate a small doc on the fly

I was able to reproduce the bug the following way:
orchis:~/XML -> ./xmllint --encode ISO-8859-1 --auto
xmlSaveFileEnc: document not in UTF8
orchis:~/XML -> 

after applying the small patch enclosed this solved the
problem:

orchis:~/XML -> ./xmllint --encode ISO-8859-1 --auto
<?xml version="1.0" encoding="ISO-8859-1"?>
<info>abc</info>
orchis:~/XML -> 

Therefore my 1. question:
How to modify the code to get my "encoding=..." headline?

  see enclosed patch

2. question:
What to do to insert german characters in the output (to get the following 
result):
<?xml version="1.0" encoding="ISO-8859-1"?>
<info>äüö</info>

  Convert them to UTF8 strings before inserting them in the tree,
you can use the isolat1ToUTF8() routine for doing so on strings.

Daniel

-- 
Daniel Veillard      | Red Hat Network http://redhat.com/products/network/
veillard redhat com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/

Attachment: encoding.patch
Description: Text document



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]