8

要素内にテキストを保持するために、CDATA を使用して C# で XML ドキュメントを作成しようとしています。例えば..

<email>
<![CDATA[test@test.com]]>
</email>

ただし、ドキュメントの InnerXml プロパティを取得すると、CDATA が再フォーマットされているため、InnerXml 文字列は次のようになり、失敗します。

<email>
&lt;![CDATA[test@test.com]]&gt;
</email>

XML の文字列にアクセスするときに元の形式を維持するにはどうすればよいですか?

乾杯

4

3 に答える 3

12

使用しないInnerText: 使用するXmlDocument.CreateCDataSection:

using System;
using System.Xml;

public class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("root");
        XmlElement email = doc.CreateElement("email");
        XmlNode cdata = doc.CreateCDataSection("test@test.com");

        doc.AppendChild(root);
        root.AppendChild(email);
        email.AppendChild(cdata);

        Console.WriteLine(doc.InnerXml);
    }
}
于 2009-06-09T09:50:55.260 に答える
9

XmlDocument:

    XmlDocument doc = new XmlDocument();
    XmlElement email = (XmlElement)doc.AppendChild(doc.CreateElement("email"));
    email.AppendChild(doc.CreateCDataSection("test@test.com"));
    string xml = doc.OuterXml;

またはでXElement

    XElement email = new XElement("email", new XCData("test@test.com"));
    string xml = email.ToString();
于 2009-06-09T09:51:59.813 に答える
1

XML ドキュメントで CDATA ノードを作成する方法の詳細と例については、XmlDocument::CreateCDataSection メソッドを参照してください。

于 2009-06-09T09:50:57.957 に答える