2015-11-03 6 views
0

XmlDocument файл:Добавление элементов в XML-тьфу C#

<?xml version="1.0"?> 
    <config> 
     <newsy> 
     <category id="sport"> 
      <source> 
      <contelemname>cont</contelemname> 
      <refresh>3</refresh> 
      <url>http://sport.wp.pl/rss.xml</url> 
      </source> 
      <source> 
      <contelemname>cont</contelemname> 
      <refresh>5</refresh> 
      <url>http://moto.wp.pl/rss.xml</url> 
      </source> 
     </category> 
     </newsy> 
    </config> 

Как добавить новые элементы в этот файл как новый источник (URL, обновления) или новую категорию? Или как удалить категорию и источник.

код начинается с

XDocument doc = XDocument.Load(path); 

, но позже, Что?

+0

Да, человек, похоже, что у вас не было достаточно – meda

+0

Я пробовал все ... – Enteee

+0

Вы также пытались применить примеры в ссылках, которые я предоставил? –

ответ

1

Я хотел, чтобы вы посмотрите на: https://msdn.microsoft.com/en-us/library/ms162365(v=vs.110).aspx, https://msdn.microsoft.com/en-us/library/system.xml.xmlnode(v=vs.110).aspx и https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.appendchild(v=vs.110).aspx

Документация Microsoft является отличным источником для такого рода вопросы.

Загрузите Xml

Вы можете сделать это с помощью строки

XmlDocument xmlDocument = new XmlDocument(); 
xmlDocument.LoadXml(xml); 

Или с помощью потока файлов (вы можете использовать XDocument у вас есть сейчас)

XmlDocument xmlDocument = new XmlDocument(); 
using(XmlReader xmlReader = xDocument.CreateReader()) 
{ 
    xmlDocument.Load(xmlReader); 
} 

Выбор узла

Для этого вы можете использовать XPath (http://www.w3schools.com/xsl/xpath_syntax.asp, которым возвращает XmlNodeList

XmlNodeList categoryNodes = xmlDocument.SelectNodes("config//newsy//category"); 

Создать новый элемент

Для создания нового элемента и может использовать метод CreateElement (есть и другие методы создания атрибуты и т.д. см. документацию Microsoft).

XmlNode newSource = xmlDocument.CreateElement("source"); 
XmlNode newSourceUrl = xmlDocument.CreateElement("url"); 
newSourceUrl.InnerText = "http://www.test.com"; 
newSource.AppendChild(newSourceUrl); 

Это создает новый исходный элемент и элемент url. элемент url будет добавлен к исходному элементу.

Добавьте его к категории

Добавить его в категории узла.

if (categoryNodes != null && categoryNodes.Count > 0) 
    categoryNodes[0].AppendChild(newSource); 

Поиск узла, к которому вы хотите добавить ребенка. Вы могли бы также проверить на определенный атрибут как так:

foreach (XmlNode node in categoryNodes) 
{ 
    if (string.Equals(node.Attributes["id"].Value.ToString(), "sport", StringComparison.OrdinalIgnoreCase)) 
     node.AppendChild(newSource); 
} 

Сохранить

Сохранить XmlDocument. Для того, чтобы сохранить его на диске:

xmlDocument.Save(path); 

Новый XML

<?xml version="1.0"?> 
<config> 
    <newsy> 
     <category id="sport"> 
      <source> 
       <contelemname>cont</contelemname> 
       <refresh>3</refresh> 
       <url>http://sport.wp.pl/rss.xml</url> 
      </source> 
      <source> 
       <contelemname>cont</contelemname> 
       <refresh>5</refresh> 
       <url>http://moto.wp.pl/rss.xml</url> 
      </source> 
      <source> 
       <url>http://www.test.com</url> 
      </source> 
     </category> 
    </newsy> 
</config> 

Я надеюсь, что это помогает и.