0x04
является символом управления передачей и не может появляться в текстовой строке. XmlDocument вправе отклонить его, если он действительно появляется в ваших данных. Это говорит о том, что имеющееся у вас регулярное выражение не делает то, что вы думаете, если я прав, что регулярное выражение найдет первый экземпляр одного или нескольких из этих недопустимых символов в начале строки и заменит его, но не все они. Реальный вопрос для меня заключается в том, почему этот нетекстовый «символ» появляется в данных, изначально предназначенных для XML.
У меня есть другие вопросы. Я никогда не видел JsonConvert.DeserializeXmlNode
раньше - мне пришлось посмотреть, что он делает. Почему вы используете функцию JSON для корня документа, который, вероятно, поэтому не содержит JSON? Почему вы берете этот документ, конвертируете его обратно в строку, а затем создаете из него XDocument? Почему бы просто не создать XDocument для начала?