2012-08-26 6 views
2

에 요소를 추가하고 예를 들어, 기존의 XML 파일에 작성할 수 있습니다 방법을 물어보고 싶은게 :C#을 XmlWriter를이 - 현재 나는 XmlWriter를 함께 일하고 요소

a.xml

<info> 
     <description>Test3</description> 
     <loops>100</loops> 
</info> 

을 입력하면 <Info>에 추가됩니다.

<name>Test1</name> 

<name> 재생 어떤 역할의 위치 만이 </info> 전에 따라서 마지막 요소를 작성하면 최선을 다 할 것이다.

<info> 
     <description>Test3</description> 
     <loops>100</loops> 
     <name>Test1</name> 
</info> 

나 :

<info> 
     <name>Test1</name> 
     <description>Test3</description> 
     <loops>100</loops> 
</info> 
+1

나는 많은 질문을 편집했습니다. XML은 대소 문자를 구분하므로 시작 태그와 닫기 태그 사이의 대문자가 다른 이전 요소가 문제를 일으킬 수 있다는 점을 알아야합니다. – Jacob

답변

3

XmlWriter 클래스는 빠르지 만 한 방향으로 만, 요소에 의해 요소에 쓰기입니다. 당신이 기존의 XML을 편집 할 경우, 가장 쉬운 방법은 XML에 LINQ를 사용하는 것입니다

var doc = XDocument.Parse(xml); // or XDocument.Load(xmlFilePath) 
doc.Root.Add(new XElement("name", "Test1")); 

doc.Save(xmlFilePath); 
+1

변경 사항이 저장되지 않기 때문에'doc.Save (xmlFilePath);'를 추가하는 것을 잊지 마십시오. – Dmytro

+0

네, 좋은 팁. 나는 예제를 업데이트했다. – whyleee

1

내가 XmlReader를하고 작가를 사용하도록 권하고 싶지 않다, 그러나 당신이 요청하는 경우 ... 난 그냥 필요 것 같아요 XML을 읽은 다음 다시 작성해야하지만 새 노드가 있어야합니다. 예 :

  XmlDocument d = new XmlDocument(); 
      d.Load("c:/a.xml"); 

      XmlNode root = d.FirstChild; 
      if(root.HasChildNodes) 
      { 
       using(XmlWriter writer = new XmlTextWriter("c:/a.xml", Encoding.Default)) 
       { 
        writer.WriteStartDocument(); 
        writer.WriteStartElement(root.Name); 
        foreach(XmlNode node in root.ChildNodes) 
        { 
         writer.WriteStartElement(node.Name); 
         writer.WriteValue(node.InnerText); 
         writer.WriteEndElement(); 

         // writing new node after "loop" node 
         if (node.Name == "loop") 
         { 
          writer.WriteStartElement("name"); 
          writer.WriteValue("test1"); 
          writer.WriteEndElement(); 
         } 

        } 
        writer.WriteEndElement(); 
        writer.WriteEndDocument(); 
       } 
      } 
관련 문제