private void AnalyzeProcessingInstruction() {
Debug.Assert(this.mainNode.NodeType == XmlNodeType.ProcessingInstruction || this.mainNode.NodeType == XmlNodeType.XmlDeclaration);
//Debug.Assert((object) this.currentInfo == (object) this.mainNode);
StringBuilder newPI = null;
string pi = this.mainNode.Value;
bool question = false;
int index = 0, begin = 0;
for (; index < pi.Length; index ++) {
switch (pi[index]) {
case s_Question:
question = true;
break;
case s_Greater:
if (question) {
if (newPI == null) {
newPI = new StringBuilder(pi, begin, index, 2 * pi.Length);
}
else {
newPI.Append(pi, begin, index - begin);
}
newPI.Append(s_SpaceGreater);
begin = index + 1;
}
question = false;
break;
default:
question = false;
break;
}
}
if (newPI != null) {
if (begin < pi.Length) {
newPI.Append(pi, begin, pi.Length - begin);
}
this.mainNode.Value = newPI.ToString();
}
}