How to force XDocument to output the prolog in uppercase while preserving identation and formatting?

前端 未结 4 1858
刺人心
刺人心 2021-01-23 05:34

I want XDocument to output the XML prolog (for example \"\") in uppercase.

Here is how I\'m cur

4条回答
  •  -上瘾入骨i
    2021-01-23 06:24

    XDocument xdoc = new XDocument();
    
    .... // do your stuff here
    
    string finalDoc = xdoc.ToString();
    string header = finalDoc.Substring(0,finalDoc.IndexOf("?>") + 2); // end of header tag
    
    finalDoc = finalDoc.Replace(header, header.ToUpper());  // replace header with the uppercase version
    
    .... // do stuff with the xml with the upper case header
    

    EDIT:

    Oh you only want the UTF-8 upper case?

    Then this is more correct:

    XDocument xdoc = new XDocument();
    
    .... // do your stuff here
    
    string finalDoc = xdoc.ToString();
    string header = finalDoc.Substring(0,finalDoc.IndexOf("?>") + 2); // end of header tag
    string encoding = header.Substring(header.IndexOf("encoding=") + 10);
    encoding = encoding.Substring(0,encoding.IndexOf("\""); // only get encoding content
    
    // replace encoding with the uppercase version in header, then replace old header with new one.
    finalDoc = finalDoc.Replace(header, header.Replace(encoding, encoding.ToUpper()));
    
    .... // do stuff with the xml with the upper case header
    

    This will only replace whatever is in the encoding to uppercase manually.

提交回复
热议问题