добавить узел XML с форматированием - PullRequest
1 голос
/ 27 декабря 2011

Я добавляю узел в файл 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>

, но это выглядит так:

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

Ответы [ 2 ]

5 голосов
/ 27 декабря 2011

Существует метод, который вы можете использовать для переноса cdata.

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

Это XMLDocument.CreateCDataSection возвращает объект XmlCDataSection, который вы можете добавить к вашему узлу, и он обернет ваш файл в CDATA.

Проверьте это для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection.aspx

0 голосов
/ 10 августа 2012

CDATA считается узлом, а не внутренним текстом

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

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

Итак:

XmlElement nodeTitle = document.CreateElement("name");
XmlCDataSection CDATA = document.CreateCDataSection("panda.gif");
nodeTitle.AppendChild(CDATA);
node.AppendChild(nodeTitle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...