durumdara, 30.11.2011 13:08:
As I see that XML parsing is "wrong" in Python.

You didn't say what you are using for parsing, but from your example, it appears likely that you are using the xml.dom.minidom module.


I must use predefined XML files, parsing them, extending them, and
produce some result.

But as I see that in Windows this is working wrong.

When the predefined XMLs are "formatted" (prettied) with CRLFs, then
the parser keeps these plus LF characters (not handle the logic that
CR = LF = CRLF), and it is appearing in the new result too.

I assume that you are referring to XML's newline normalisation algorithm? That should normally be handled by the parser, which, in the case of minidom, is usually expat. And I seriously doubt that expat has a problem with something as basic as newline normalisation.

Did you verify that the newlines are really not being converted by the parser? From your example, I can only see that you are serialising the XML tree back into a file, which may or may not alter the line endings by itself. Instead, take a look at the text content in the tree right after parsing to see how line endings look at that level.


     xo = parse('test_original.xml')
     de = xo.documentElement
     de.setAttribute('b', "2")
     b = xo.toxml('utf-8')
     f = open('test_original2.xml', 'wb')
     f.write(b)
     f.close()

This doesn't do any pretty printing, though, in case that's what you were really after (which appears likely according to your comments).


And: if I used text elements, this can extend the information with
plus characters and make wrong xml...

Sorry, I don't understand this sentence.


I can use only "myowngenerated", and not prettied xmls because of this
problem!

Then what is the actual problem? Do you get an error somewhere? And if so, could you paste the exact error message and describe what you do to produce it? The mere fact that the line endings use the normal platform specific representation doesn't seem like a problem to me.

Stefan

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to