While I agree with the other answers regarding using caution when changing the XML directly, I have found the need to make a similar change, and have done so, keeping my constraints intact and have been successful.
Make sure you are using source control so that you can abandon your changes if needed.
I suggest making the properties of your modified control match a working control of the new type created in interface builder.
Example
To change from Label to Text Field, you would change the "label" tag in the XML to "textField."
<label opaque="NO" ... </label>
becomes
<textField opaque:NO ... </textField>
where "..." is the rest of the attributes and elements of the control.
Once the element tag change is completed, modify the attributes of the element to match a textField (in this case) to another Text Field created in interface builder. Be careful that the id attribute is not changed; the id attribute is how your constraints are mapped to the control.
Save the file and then reopen the file in interface builder. If interface builder can parse the file, then you can resume development as normal.
Again, use caution, but this can be a big time saver.