2014-10-09 5 views
-1

Я хочу изменить имя узла XML в C#, Мой код,Как изменить имя узла XML в C#

string filepath = @"C:\JobDocuments\jobsxml.xml"; 
    XDocument doc = XDocument.Load(filepath); 
    doc.Nodes.Name = "jobs"; 
    doc.Save(filepath); 

Мой файл XML является,

<jobs> 
-<Table> 
    <title><![CDATA[ Country ]]></title> 
    <category><![CDATA[ Site Engineering/Project Management ]]></category> 
    <description><![CDATA[ sades ]]></description> 
    </Table> 
</jobs> 

Я хочу, чтобы результат следующим образом ,

<jobs> 
     <job> 
     <title><![CDATA[ Country ]]></title> 
     <category><![CDATA[ Site Engineering/Project Management ]]></category> 
     <description><![CDATA[ sades ]]></description> 
     </job> 
</jobs> 

Здесь я хочу, чтобы отобразить <job> вместо -<Table>. Я изменился в Query, но это не дает правильного порядка.

SELECT '<![CDATA[ ' + JobTitle + ' ]]>' as title, 
       '<![CDATA[ ' + JobCategory + ' ]]>' as category, 
       '<![CDATA[ ' + JobDescription + ' ]]>' as [description] 
     from Jobs FOR XML PATH('job') 

Пожалуйста, помогите мне. Спасибо

+1

В основном вы хотите изменить таблицу для работы? где возникает проблема смены jobsxml.xml? это потому, что создается из другого источника? – mpacheco

+0

Я пишу вам, как это сделать в последнем вопросе, похоже, что вы этого не делаете ... – mybirthname

ответ

0

Вы можете попробовать это?

String sampleXml = "<jobs><Table><title><![CDATA[ Country ]]></title> <category><![CDATA[ Site Engineering/Project Management ]]></category> <description><![CDATA[ sades ]]></description> </Table></jobs>"; 

      XmlDocument xmlDoc = new XmlDocument(); 
      xmlDoc.LoadXml(sampleXml); 

      XmlNode rootE = xmlDoc.GetElementsByTagName("jobs")[0]; 
      XmlNode oldE = rootE.SelectSingleNode("Table"); 
      XmlNode newE = xmlDoc.CreateElement("job"); 
      rootE.ReplaceChild(newE, oldE); 
      while (oldE.ChildNodes.Count != 0) 
      { 
       newE.AppendChild(oldE.ChildNodes[0]); 
      } 
      while (oldE.Attributes.Count != 0) 
      { 
       newE.Attributes.Append(oldE.Attributes[0]); 
      } 
+0

Примечание: Хорошее решение вместо этого изменит сам xml, чтобы использовать логику для этого ... – mpacheco

+0

Thank вы @mpacheco, я получаю ошибку «Данные на корневом уровне недействительны. Строка 1, позиция 1. ' – Srinivas

+0

Я вижу дефис рядом с

, есть ли в вашем файле? – mpacheco

Смежные вопросы