프로그래밍 기술/XML.NET

[XML.NET] 24. XmlDocument 클래스로 노드 검색 및 삭제

언제나휴일 2016. 4. 18. 13:54
반응형

XmlDocument 클래스로 노드 검색 및 삭제


 특정 노드의 특정 자식 노드를 제거할 때는 XmlNode RemoveChild 메서드를 사용합니다.

public XmlNode RemoveChild ( XmlNode node);

 

 특정 노드의 모든 자식과 특성을 제거할 때는 XmlNode RemoveAll 메서드를 사용합니다.

public void RemoveAll ( );

 

 특성 컬렉션에서 특정 특성을 제거할 때는 특성 컬렉션의 Remove 메서드를 사용합니다.

public XmlAttribute Remove ( );

 

 특성 컬렉션에서 모든 특성을 제거할 때는 특성 컬렉션의 RemoveAll 메서드를 사용합니다.

public void RemoveAll ( );

 

 특성 컬렉션에서 특정 인덱스의 특성을 제거할 때는 특성 컬렉션의 RemoveAt 메서드를 사용합니다.

public XmlAttribute RemoveAt ( int i);

 

 특정 요소의 특성 컬렉션을 제거할 때는 XmlElement 개체의 RemoveAllAttributes를 사용합니다.

public void RemoveAllAttributes ( );

 

 특정 요소의 특성을 이름으로 제거할 때는 XmlElement 개체의 RemoveAttribute 메서드를 사용합니다.

public void RemoveAttribute ( string name);

public void RemoveAttribute ( string name, string ns);

 

 특정 요소의 특성을 인덱스로 제거할 때는 XmlElement 개체의 RemoveAttributeAt 메서드를 사용합니다.

public XmlNode RemoveAttributeAt ( int i);

 

 검색 조건과 일치하는 첫 번째 노드를 선택할 때 XmlNode SelectSingleNode 메서드를 사용합니다.

public XmlNode SelectSingleNode ( string xpath);

public XmlNode SelectSingleNode ( string xpath, XmlNamespaceManager nsmg);

 

 검색 조건과 일치하는 노드의 목록을 선택할 때 XmlNode SelectNodes 메서드를 사용합니다.

public XmlNodeList SelectNodes ( string xpath);

public XmlNodeList SelectNodes ( string xpath, XmlNamespaceManager nsmg);

 

 

 

Program.cs


class Tracer

{

    XmlDocument doc;

 

    public void MakeDocument()

    {

        doc = new XmlDocument();

        XmlDeclaration xmldecl;

        xmldecl = doc.CreateXmlDeclaration("1.0", null, null);

        doc.InsertBefore(xmldecl, doc.DocumentElement);

 

        XmlElement root = doc.CreateElement("books");

        doc.AppendChild(root);

        XmlElement elem = doc.CreateElement("book");

        elem.InnerText = "XML.NET";

        doc.DocumentElement.AppendChild(elem);

        elem.SetAttribute("price", "12000");

        XmlAttribute attr = doc.CreateAttribute("count");

        attr.Value = "50";

        elem.Attributes.Append(attr);

        XmlElement elem2 = doc.CreateElement("book");

        elem2.InnerText = "ADO.NET";

        doc.DocumentElement.AppendChild(elem2);

    }

 

    public void Trace()

    {

        TestXmlNode_RemoveChild();

        TestXmlNode_RemoveAll();

        TestAttributes_Remove();

        TestAttributes_RemoveAll();

        TestAttributes_RemoveAt();

        TestElement_RemoveAllAttributes();

        TestElement_RemoveAttribute();

        TestElement_RemoveAttributeAt();

    }

 

    private void TestElement_RemoveAttributeAt()

    {

        Console.WriteLine("---Start TestElement_RemoveAttributeAt---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlElement xelem = cnode as XmlElement;

        if (xelem != null)   {   xelem.RemoveAttributeAt(0);    }

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestElement_RemoveAttributeAt---");

    }

    private void TestElement_RemoveAttribute()

    {

        Console.WriteLine("---Start TestElement_RemoveAttribute---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlElement xelem = cnode as XmlElement;

        if (xelem != null)    {    xelem.RemoveAttribute("price");    }

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestElement_RemoveAttribute---");

    }

    private void TestElement_RemoveAllAttributes()

    {

        Console.WriteLine("---Start TestElement_RemoveAllAttributes---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlElement xelem = cnode as XmlElement;

        if (xelem != null) {    xelem.RemoveAllAttributes();    }

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestElement_RemoveAllAttributes---");

    }

 

    private void TestAttributes_RemoveAt()

    {

        Console.WriteLine("---Start TestAttributes_RemoveAt---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlAttributeCollection col = cnode.Attributes;

        col.RemoveAt(0);

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestAttributes_RemoveAt---");

    }

    private void TestAttributes_RemoveAll()

    {

        Console.WriteLine("---Start TestAttributes_RemoveAll---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlAttributeCollection col = cnode.Attributes;

        col.RemoveAll();

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestAttributes_RemoveAll---");

    }

    private void TestAttributes_Remove()

    {

        Console.WriteLine("---Start TestAttributes_Remove---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        XmlAttributeCollection col = cnode.Attributes;

        XmlAttribute attr = col["price"];

        col.Remove(attr);

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestAttributes_Remove---");

    }

    private void TestXmlNode_RemoveAll()

    {

        Console.WriteLine("---Start TestXmlNode_RemoveAll---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        pnode.RemoveAll();

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestXmlNode_RemoveAll---");

    }

    private void TestXmlNode_RemoveChild()

    {

        Console.WriteLine("---Start TestXmlNode_RemoveChild---");

        MakeDocument();

        XmlNode pnode = doc.SelectSingleNode("books");

        XmlNode cnode = pnode.ChildNodes[0];

        pnode.RemoveChild(cnode);

        doc.Save(Console.Out);

        Console.WriteLine();

        Console.WriteLine("---End TestXmlNode_RemoveChild---");

   }

}

class Program

{

    static void Main(string[] args)

    {

        Tracer tracer = new Tracer();

        tracer.Trace();

    }

}

[소스] 노드 제거 예제 코드

반응형