요즘 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>
<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>
<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));
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));
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 |