2011-12-27 10 views
1

ノードをXMLファイルに追加していますが、正しくフォーマットする必要があります。あなたはそれを助けることができますか?XMLノードに書式設定を追加する

 String newFile = System.IO.Path.GetFileName(textBox1.Text); 

     //file name 
     string filename = @"palette.xml"; 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(filename); 

     //create node and add value 
     XmlNode node = doc.CreateNode(XmlNodeType.Element, "item", null); 

     //create title node 
     XmlNode nodeTitle = doc.CreateElement("name"); 
     //add value for it 
     nodeTitle.InnerText = @"<![CDATA["+newFile+"]]>"; 

     //create Url node 
     XmlNode nodeUrl = doc.CreateElement("imgfile"); 
     nodeUrl.InnerText = newFile; 

     //add to parent node 
     node.AppendChild(nodeTitle); 
     node.AppendChild(nodeUrl); 

     //add to elements collection 
     doc.DocumentElement.AppendChild(node); 

     //save back 
     doc.Save(filename); 

XMLはそのように見ている必要があります。

<item> 
    <name><![CDATA[panda.gif]]></name> 
    <imgfile>panda.gif</imgfile> 
    </item> 

が、それはそのように見える:あなたはそれがあるCDATAをラップするために使用できる方法は

<item> 
    <name>&lt;![CDATA[panda.gif]]&gt;</name> 
    <imgfile>panda.gif</imgfile> 
    </item> 

答えて

5

があります。

XMLNode.AppendChild(XMLDocument.CreateCDataSection(newFile)); 

それXMLDocument.CreateCDataSectionはあなたのノードに追加することができ、それがCDATAでファイルをラップしますXmlCDataSectionオブジェクトを返します。

詳細については

チェックこのアウト:CDATAがノードではなく、内部テキスト

<item> 
    <name> 
    <![CDATA[panda.gif]]> 
    </name> 

    <imgfile>panda.gif</imgfile> 
</item> 

考えられているhttp://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection.aspx

+0

は、あなたがより良い説明をお願いできますか? – Andrew

+1

心配はいりません... OK、コード内でやっているのは、CDATAを直接内部のテキストに入れることです。それが間違って解析されている理由です。私があなたに与えたことは、XMLDocumentクラスを使ってCreateCDataSectionというメソッドを呼び出して、あなたの文字列をCDATAにラップすることです。 – Algorhythm

0

ので:

XmlElement nodeTitle = document.CreateElement("name"); 
XmlCDataSection CDATA = document.CreateCDataSection("panda.gif"); 
nodeTitle.AppendChild(CDATA); 
node.AppendChild(nodeTitle); 
関連する問題