ASP.NET C# XML  노드추가하기 / XML CDATA 추가하는 방법 




XML을 사용하다보면 하나하나 엘리멘트 생성하여 추가하다보면 소스가 길어지기 마련이다.

다양한 방식으로 활용가능하기때문에, 아래와 같이 사용해보았다.








1. 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
 
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0""utf-8""yes"));
 
xmlDoc = addNode(xmlDoc, """LIST""" ,"NEW");
xmlDoc = addNode(xmlDoc, "LIST", "WRITER", "당꿈응", "NEW");
 
for (int i = 0; i < 10; i++)
{
    XmlElement sList= xmlDoc.CreateElement("SUB_LIST");
    sList= addElement(xmlDoc, sList, "TITLE""TITLE_" + i + """ELEMENT");
    sList= addElement(xmlDoc, sList, "CONTENT""CONTENT_" + i , "CDATA");
    xmlDoc.DocumentElement.AppendChild(sList);
}
cs





2. 엘리멘트 추가

 -> XmlElement 를 전달받아서 자식 엘리먼트를 추가해서 리턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private XmlElement addElement(XmlDocument xmlDoc, XmlElement reElement, string NodeName, string NodeText, string type)
{
    XmlElement Eadd = xmlDoc.CreateElement(NodeName);
    if (type == "ELEMENT")
    {
        if (NodeText != "")
        {
            XmlText TextStr = xmlDoc.CreateTextNode(NodeText);
            Eadd.AppendChild(TextStr);
        }
    }
    else if (type == "CDATA")
    {
        if (NodeText != "")
        {
            XmlCDataSection TextStr = xmlDoc.CreateCDataSection(NodeText);
            Eadd.AppendChild(TextStr);
        }
    }
    reElement.AppendChild(Eadd);
    return reElement;
}
cs




3. 노드추가

->XmlDocument를 전달받아 자식노드를 추가한 후 리턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public XmlDocument addNode(XmlDocument xmlDoc, string targetNode ,  string cNodeName, string cNodeText , string cNodeType)
{
    XmlNode targetObj;                                      //자식을 추가할 상위노드 선언
    XmlElement childNode = xmlDoc.CreateElement(cNodeName); //자식 노드 생성
    childNode.InnerText = cNodeText;                        //자식노드 내용 넣기
    
    if (targetNode != "")
    {
        targetObj = xmlDoc.SelectSingleNode(targetNode);  //상위노드 선택
        targetObj.AppendChild(childNode);                 //노드 추가
 
        if (cNodeType == "NEW")
        {
            xmlDoc.AppendChild(targetObj); //추가할 노드 
        }
    }
    else
    {
        xmlDoc.AppendChild(childNode);
    }
 
    return xmlDoc;
}
 
cs



CreateElement / CreateCDataSection / CreateXmlDeclaration /AppendChild

공감과 댓글은 작성자에게 큰 힘이 됩니다. ^^


+ Recent posts