1

次のようなxmlデータがあります..

<Root>
<Data>Nack</Data>
<Data>Nelly</Data>
</Root>

この文字列に追加したい"<?xml version=\"1.0\"?>" 。次に、xml を文字列として保持します。

私はいくつかのことを試みました..

これにより、元の xml 文字列が壊れて失われます

myOriginalXml="<?xml version=\"1.0\"?>"  + myOriginalXml;

これは何もしません。宣言が添付されていない元の xml データを保持するだけです。

 XmlDocument doc = new XmlDocument();
                doc.LoadXml(myOriginalXml);
                XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8","no");
                StringWriter sw = new StringWriter();
                XmlTextWriter tx = new XmlTextWriter(sw);
                doc.WriteTo(tx);
                string xmlString = sw.ToString();

これも効果がないようです..

  XmlDocument doc = new XmlDocument();
                doc.LoadXml(myOriginalXml);
                XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "no");
                MemoryStream xmlStream = new MemoryStream();
                doc.Save(xmlStream);
                xmlStream.Flush();
                xmlStream.Position = 0;
                doc.Load(xmlStream);
                StringWriter sw = new StringWriter();
                XmlTextWriter tx = new XmlTextWriter(sw);
                doc.WriteTo(tx);
                string xmlString = sw.ToString();
4

1 に答える 1

3

xmlwritersettingsを使用して、保存をより詳細に制御します。XmlWriter.Createは、(既定のコンストラクターではなく) その設定を受け入れます。

    var myOriginalXml = @"<Root>
                            <Data>Nack</Data>
                            <Data>Nelly</Data>
                          </Root>";
    var doc = new XmlDocument();
    doc.LoadXml(myOriginalXml);
    var ms = new MemoryStream();
    var tx = XmlWriter.Create(ms, 
                new XmlWriterSettings { 
                             OmitXmlDeclaration = false, 
                             ConformanceLevel= ConformanceLevel.Document,
                             Encoding = UTF8Encoding.UTF8 });
    doc.Save(tx);
    var xmlString = UTF8Encoding.UTF8.GetString(ms.ToArray());
于 2012-12-28T20:53:27.080 に答える