Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加带格式的XML节点_C#_Xml_Formatting - Fatal编程技术网

C# 添加带格式的XML节点

C# 添加带格式的XML节点,c#,xml,formatting,C#,Xml,Formatting,我正在将一个节点添加到XML文件中,但需要将其正确格式化。你能帮忙吗 String newFile = System.IO.Path.GetFileName(textBox1.Text); //file name string filename = @"palette.xml"; XmlDocument doc = new XmlDocument(); doc.Load(filename); //

我正在将一个节点添加到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);
String newFile=System.IO.Path.GetFileName(textBox1.Text);
//文件名
字符串文件名=@“palete.xml”;
XmlDocument doc=新的XmlDocument();
doc.Load(文件名);
//创建节点并添加值
XmlNode node=doc.CreateNode(XmlNodeType.Element,“item”,null);
//创建标题节点
XmlNode nodeTitle=doc.CreateElement(“名称”);
//为它增值
nodeTitle.InnerText=@”;
//创建Url节点
XmlNode nodeUrl=doc.CreateElement(“imgfile”);
nodeUrl.InnerText=newFile;
//添加到父节点
node.AppendChild(nodeTitle);
node.AppendChild(nodeUrl);
//添加到元素集合
doc.DocumentElement.AppendChild(节点);
//挽救
文件保存(文件名);
XML应该是这样的:

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

panda.gif
但看起来是这样的:

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

![CDATA[panda.gif]]
panda.gif

有一种方法可以用来包装cdata数据

XMLNode.AppendChild( XMLDocument.CreateCDataSection( newFile ) );
它XMLDocument.CreateCataSection返回XmlCDataSection对象,您可以将该对象附加到节点,它将用CDATA包装您的文件


查看此项了解更多信息:

有一种方法可用于包装cdata数据

XMLNode.AppendChild( XMLDocument.CreateCDataSection( newFile ) );
它XMLDocument.CreateCataSection返回XmlCDataSection对象,您可以将该对象附加到节点,它将用CDATA包装您的文件


查看此项了解更多信息:

CDATA被视为节点,而不是内部文本

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

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

CDATA被视为一个节点,而不是一个内部文本

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

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

你能给我一个更好的解释吗?不用担心……好的,你在代码中的做法是尝试将CDATA直接放入内部文本中。这就是它解析错误的原因。上面我给你的一行代码是使用XMLDocument类调用一个名为CreateCataSection的方法来将字符串包装到CDATA中。请你给出更好的解释好吗?不用担心……好的,在代码中这样做的方法是尝试将CDATA直接放入内部文本中。这就是它解析错误的原因。我在上面给出的一行代码是使用XMLDocument类调用一个名为CreateCataSection的方法,将字符串包装到CDATA中。