본문 바로가기

.net

Xml 수정하기(update)


요즘 xml을 다루게 될일이 많아져서 요새 시달리는중~

아래와 같은 두 종류의 xml타입이 있으며 빨간부분의 값을 수정해볼 것이다.

A타입
<?xml version="1.0" encoding="utf-8"?>
  <projOrderInfo>
    <ORDR>
      <F_ORDR_CODE>8D62700301</F_ORDR_CODE>
      <F_PROJ_CODE>20080707005628</F_PROJ_CODE>
      <F_PROJ_PRICE>8900</F_PROJ_PRICE>
      <F_ORDR_CNTS>1</F_ORDR_CNTS>
    </ORDR>
    <ORDR>
      <F_ORDR_CODE>8D62700302</F_ORDR_CODE>
      <F_PROJ_CODE>20080707005633</F_PROJ_CODE>
      <F_PROJ_PRICE>8900</F_PROJ_PRICE>
      <F_ORDR_CNTS>1</F_ORDR_CNTS>
    </ORDR>
 <projOrderInfo>


B타입
<?xml version="1.0" encoding="utf-8"?>
  <projOrderInfo>
    <ORDR>
      <ITEM F_ORDR_CODE=8D62700301 F_PROJ_CODE=20080707005628/>
    </ORDR>
     <ORDR>
      <ITEM F_ORDR_CODE=8D62700302 F_PROJ_CODE=20080707005633/>
    </ORDR>
 <projOrderInfo>


위와 같은 형태의 XML파일이 있다고 가정하자.

간단하다.. 수정될 NODE로 접근하는 방법만 안다면...

A타입의 F_ORDR_CODE값이 "8D62700302" NODE값을 변경해보자.

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(A.xml));
XmlNode node = doc.SelectSingleNode("/descendant::projOrderInfo/ORDR/F_ORDR_CODE[.='8D62700302']");
if (node != null)
{
    node.InnerText = "수정되지렁";
}
doc.Save(Server.MapPath(A.xml));

그렇다면 B타입의 F_ORDR_CODE 속성값 "8D62700302" 변경해보자.

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(B.xml));
XmlNode node = doc.SelectSingleNode("/descendant::projOrderInfo/ORDR/ITEM [@F_ORDR_CODE='8D62700302']/@F_ORDR_CODE");
if (node != null)
{
    node.InnerText = "수정되지렁";
}
doc.Save(Server.MapPath(B.xml));

위 소스의 해당 node로 접근 하는 방법만 알면 별게 아니다.

만약 수정해야 할 node가 많다면 XmlNodeList를 사용하면 되겠다.

'.net' 카테고리의 다른 글

Image Resizing  (0) 2008.12.23
ASP.NET 디렉토리(directory) 복사  (1) 2008.07.04
Xml네임스페이스 "http://tempuri.org/"  (0) 2008.05.19