N8Process.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. #include "stdafx.h"
  2. #include "N8Process.h"
  3. #include "Markup.h"
  4. namespace N8Process
  5. {
  6. //////////////////////////////////////////////////////////////////////////
  7. // CProductList类实现;
  8. BOOL CProductList::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
  9. {
  10. SetXMLPath(lpXMLPath);
  11. CMarkup xml;
  12. if ( !xml.Load(GetPath()) )
  13. {
  14. return FALSE;
  15. }
  16. m_bLoad = TRUE;
  17. m_AryItems.RemoveAll();
  18. if ( !xml.FindElem() )
  19. return FALSE;
  20. if ( xml.IntoElem() )
  21. {
  22. while( xml.FindElem(_T("product")) )
  23. {
  24. CItem tagitem;
  25. xml.FindChildElem(_T("ID"));
  26. tagitem.m_strProductID = xml.GetChildData();
  27. xml.FindChildElem(_T("name"));
  28. tagitem.m_strProductName = xml.GetChildData();
  29. xml.FindChildElem(_T("width"));
  30. tagitem.m_strProductWidth = xml.GetChildData();
  31. xml.FindChildElem(_T("height"));
  32. tagitem.m_strProductHeight = xml.GetChildData();
  33. m_AryItems.Add(tagitem);
  34. }
  35. xml.OutOfElem();
  36. }
  37. return TRUE;
  38. }
  39. BOOL CProductList::IsItemExists(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName)
  40. {
  41. if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0'))
  42. return FALSE;
  43. if ( m_AryItems.GetSize() == 0 )
  44. return FALSE;
  45. BOOL bExists = FALSE;
  46. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  47. {
  48. CItem &tagItem = m_AryItems.ElementAt(i);
  49. if ( tagItem.m_strProductID.CompareNoCase(lpProductID) == 0 || tagItem.m_strProductName.CompareNoCase(lpProductName) == 0)
  50. {
  51. bExists = TRUE;
  52. break;
  53. }
  54. }
  55. return bExists;
  56. }
  57. BOOL CProductList::InsertItem(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName, IN LPCTSTR lpProductWidth, IN LPCTSTR lpProductHeiht)
  58. {
  59. if ( !IsPathExists() )
  60. return FALSE;
  61. if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0'))
  62. return FALSE;
  63. if ( !m_bLoad )
  64. {
  65. if( !LoadXML() )
  66. return FALSE;
  67. }
  68. if ( IsItemExists(lpProductID, lpProductName) )
  69. {
  70. return FALSE;
  71. }
  72. CMarkup xml;
  73. if ( !xml.Load(GetPath()) )
  74. return FALSE;
  75. if ( !xml.FindElem() )
  76. return FALSE;
  77. if ( xml.IntoElem() )
  78. {
  79. xml.FindElem(_T("product")) ;
  80. // 1.添加元素;
  81. xml.AddElem(_T("product"));
  82. xml.AddChildElem(_T("ID"), lpProductID);
  83. xml.AddChildElem(_T("name"), lpProductName);
  84. if ( lpProductWidth )
  85. xml.AddChildElem(_T("width"), lpProductWidth);
  86. else
  87. xml.AddChildElem(_T("width"), _T("0"));
  88. if ( lpProductHeiht )
  89. xml.AddChildElem(_T("height"), lpProductHeiht);
  90. else
  91. xml.AddChildElem(_T("height"), _T("0"));
  92. xml.OutOfElem();
  93. if ( !xml.Save(GetPath()))
  94. {
  95. return FALSE;
  96. }
  97. CItem tagItem;
  98. tagItem.m_strProductID = lpProductID;
  99. tagItem.m_strProductName = lpProductName;
  100. if ( lpProductWidth )
  101. tagItem.m_strProductWidth = lpProductWidth;
  102. else
  103. tagItem.m_strProductWidth = _T("0");
  104. if ( lpProductHeiht )
  105. tagItem.m_strProductHeight = lpProductHeiht;
  106. else
  107. tagItem.m_strProductHeight = _T("0");
  108. m_AryItems.Add(tagItem);
  109. }
  110. return TRUE;
  111. }
  112. BOOL CProductList::RemoveItemByID(IN LPCTSTR lpProductID)
  113. {
  114. return TRUE;
  115. }
  116. BOOL CProductList::RemoveItemByName(IN LPCTSTR lpProductName)
  117. {
  118. return TRUE;
  119. }
  120. //////////////////////////////////////////////////////////////////////////
  121. // CStaff类实现;
  122. BOOL CStaff::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
  123. {
  124. SetXMLPath(lpXMLPath);
  125. CMarkup xml;
  126. if ( !xml.Load(GetPath()) )
  127. {
  128. return FALSE;
  129. }
  130. m_bLoad = TRUE;
  131. m_AryItems.RemoveAll();
  132. if ( !xml.FindElem() )
  133. return FALSE;
  134. if ( xml.IntoElem() )
  135. {
  136. while( xml.FindElem(_T("Staff")) )
  137. {
  138. CItem tagitem;
  139. xml.FindChildElem(_T("id"));
  140. tagitem.m_strStaffID = xml.GetChildData();
  141. xml.FindChildElem(_T("name"));
  142. tagitem.m_strStaffName = xml.GetChildData();
  143. m_AryItems.Add(tagitem);
  144. }
  145. xml.OutOfElem();
  146. }
  147. return TRUE;
  148. }
  149. BOOL CStaff::IsItemExists(IN LPCTSTR lpStaffID)
  150. {
  151. if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') )
  152. return FALSE;
  153. if ( m_AryItems.GetSize() == 0 )
  154. return FALSE;
  155. BOOL bExists = FALSE;
  156. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  157. {
  158. CItem &tagItem = m_AryItems.ElementAt(i);
  159. if ( tagItem.m_strStaffID.CompareNoCase(lpStaffID) == 0 )
  160. {
  161. bExists = TRUE;
  162. break;
  163. }
  164. }
  165. return bExists;
  166. }
  167. BOOL CStaff::InsertItem(IN LPCTSTR lpStaffID, IN LPCTSTR lpStaffName)
  168. {
  169. if ( !IsPathExists() )
  170. return FALSE;
  171. if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') || lpStaffName == NULL || lpStaffName[0] == _T('\0'))
  172. return FALSE;
  173. if ( !m_bLoad )
  174. {
  175. if( !LoadXML() )
  176. return FALSE;
  177. }
  178. if ( IsItemExists(lpStaffID) )
  179. {
  180. return FALSE;
  181. }
  182. CMarkup xml;
  183. if ( !xml.Load(GetPath()) )
  184. return FALSE;
  185. if ( !xml.FindElem() )
  186. return FALSE;
  187. if ( xml.IntoElem() )
  188. {
  189. xml.FindElem(_T("product")) ;
  190. xml.AddElem(_T("Staff"));
  191. xml.AddChildElem(_T("id"), lpStaffID);
  192. xml.AddChildElem(_T("name"), lpStaffName);
  193. xml.OutOfElem();
  194. if ( !xml.Save(GetPath()))
  195. {
  196. return FALSE;
  197. }
  198. CItem tagItem;
  199. tagItem.m_strStaffID = lpStaffID;
  200. tagItem.m_strStaffName = lpStaffName;
  201. m_AryItems.Add(tagItem);
  202. }
  203. return TRUE;
  204. }
  205. BOOL CStaff::RemoveItemByID(IN LPCTSTR lpProductID)
  206. {
  207. return TRUE;
  208. }
  209. //////////////////////////////////////////////////////////////////////////
  210. // CResultProduct类实现;
  211. BOOL CResultProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
  212. {
  213. SetXMLPath(lpXMLPath);
  214. CMarkup xml;
  215. if ( !xml.Load(GetPath()) )
  216. {
  217. return FALSE;
  218. }
  219. m_bLoad = TRUE;
  220. m_AryItems.RemoveAll();
  221. if ( !xml.FindElem() )
  222. return FALSE;
  223. if ( xml.IntoElem() )
  224. {
  225. while( xml.FindElem(_T("product")) )
  226. {
  227. CItem tagitem;
  228. xml.FindChildElem(_T("id"));
  229. tagitem.m_strProductID = xml.GetChildData();
  230. xml.FindChildElem(_T("comment"));
  231. tagitem.m_strProductComment = xml.GetChildData();
  232. xml.FindChildElem(_T("name"));
  233. tagitem.m_strProductName = xml.GetChildData();
  234. xml.FindChildElem(_T("width"));
  235. tagitem.m_strProductWidth = xml.GetChildData();
  236. xml.FindChildElem(_T("height"));
  237. tagitem.m_strProductHeight = xml.GetChildData();
  238. xml.IntoElem();
  239. xml.FindElem(_T("items"));
  240. xml.IntoElem();
  241. while ( xml.FindElem(_T("item")) )
  242. {
  243. SubItem tagSubItem;
  244. xml.FindChildElem(_T("id"));
  245. tagSubItem.m_strID = xml.GetChildData();
  246. xml.FindChildElem(_T("comment"));
  247. tagSubItem.m_strComment = xml.GetChildData();
  248. xml.FindChildElem(_T("replaces"));
  249. tagSubItem.m_strReplease = xml.GetChildData();
  250. tagitem.m_ArySubItems.push_back(tagSubItem);
  251. }
  252. xml.OutOfElem();//退出item;
  253. xml.OutOfElem();//退出items;
  254. m_AryItems.Add(tagitem);
  255. }
  256. xml.OutOfElem();//退出product;
  257. }
  258. return TRUE;
  259. }
  260. BOOL CResultProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName)
  261. {
  262. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
  263. return FALSE;
  264. BOOL bExists = FALSE;
  265. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  266. {
  267. CItem &tagItem = m_AryItems.ElementAt(i);
  268. if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 ||
  269. tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
  270. {
  271. bExists = TRUE;
  272. break;
  273. }
  274. }
  275. return bExists;
  276. }
  277. BOOL CResultProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight)
  278. {
  279. if ( !IsPathExists() )
  280. return FALSE;
  281. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
  282. return FALSE;
  283. if ( !m_bLoad )
  284. {
  285. if( !LoadXML() )
  286. return FALSE;
  287. }
  288. if ( IsItemExists(lpID, lpName) )
  289. {
  290. return FALSE;
  291. }
  292. CMarkup xml;
  293. if ( !xml.Load(GetPath()) )
  294. return FALSE;
  295. if ( !xml.FindElem() )
  296. return FALSE;
  297. if ( xml.IntoElem() )
  298. {
  299. xml.FindElem(_T("product")) ;
  300. xml.AddElem(_T("product"));
  301. xml.AddChildElem(_T("id"), lpID);
  302. xml.AddChildElem(_T("comment"), lpComment);
  303. xml.AddChildElem(_T("name"), lpName);
  304. if (lpWidth)
  305. xml.AddChildElem(_T("width"), lpWidth);
  306. else
  307. xml.AddChildElem(_T("width"), _T("0"));
  308. if ( lpHeight)
  309. xml.AddChildElem(_T("height"), lpHeight);
  310. else
  311. xml.AddChildElem(_T("height"), _T("0"));
  312. xml.AddChildElem(_T("items"));
  313. xml.OutOfElem();//退出根元素;
  314. if ( !xml.Save(GetPath()))
  315. {
  316. return FALSE;
  317. }
  318. CItem tagItem;
  319. tagItem.m_strProductID = lpID;
  320. tagItem.m_strProductName = lpName;
  321. if ( lpComment )
  322. tagItem.m_strProductComment = lpComment;
  323. else
  324. tagItem.m_strProductComment = _T("");
  325. if ( lpWidth )
  326. tagItem.m_strProductWidth = lpWidth;
  327. else
  328. tagItem.m_strProductWidth = _T("0");
  329. if ( lpHeight )
  330. tagItem.m_strProductHeight = lpHeight;
  331. else
  332. tagItem.m_strProductHeight = _T("0");
  333. m_AryItems.Add(tagItem);
  334. }
  335. return TRUE;
  336. }
  337. BOOL CResultProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID, IN LPCTSTR lpSubComment, IN LPCTSTR lpSubReplease)
  338. {
  339. if ( !IsPathExists() )
  340. return FALSE;
  341. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0'))
  342. return FALSE;
  343. if ( !m_bLoad )
  344. {
  345. if( !LoadXML() )
  346. return FALSE;
  347. }
  348. if ( !IsItemExists(lpID, lpName) )
  349. {
  350. return FALSE;
  351. }
  352. CMarkup xml;
  353. if ( !xml.Load(GetPath()) )
  354. return FALSE;
  355. if ( !xml.FindElem() )
  356. return FALSE;
  357. if ( !xml.IntoElem() )
  358. return FALSE;
  359. while( xml.FindElem(_T("product")) )
  360. {
  361. CString strID;
  362. CString strName;
  363. if ( xml.FindChildElem(_T("id")) )
  364. {
  365. strID = xml.GetChildData();
  366. }
  367. if ( xml.FindChildElem(_T("name")) )
  368. {
  369. strName = xml.GetChildData();
  370. }
  371. if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 )
  372. {
  373. xml.IntoElem(); // 进入product;
  374. xml.FindElem(_T("items"));
  375. xml.IntoElem();// 进入items;
  376. CString strSubID;
  377. CString strSubComment;
  378. CString strSubReplease;
  379. BOOL bSubItemExists = FALSE;
  380. while ( xml.FindElem(_T("item")) )
  381. {
  382. if ( xml.FindChildElem(_T("id")) )
  383. {
  384. strSubID = xml.GetChildData();
  385. if ( strSubID.CompareNoCase(lpSubID) == 0 )
  386. {// 存在子结点;
  387. bSubItemExists = TRUE;
  388. break;
  389. }
  390. }
  391. }
  392. if ( !bSubItemExists )
  393. {
  394. xml.AddElem(_T("item"));
  395. xml.AddChildElem(_T("id"), lpSubID);
  396. if ( lpSubComment )
  397. xml.AddChildElem(_T("comment"), lpSubComment);
  398. else
  399. xml.AddChildElem(_T("comment"), _T(""));
  400. if ( lpSubReplease )
  401. xml.AddChildElem(_T("replaces"), lpSubReplease);
  402. else
  403. xml.AddChildElem(_T("replaces"), _T(""));
  404. int nIndex = -1;
  405. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  406. {
  407. CItem &tagItem = m_AryItems.ElementAt(i);
  408. if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
  409. {
  410. nIndex = i;
  411. break;
  412. }
  413. }
  414. SubItem tagSubItem;
  415. tagSubItem.m_strID = lpSubID;
  416. if ( lpSubComment )
  417. tagSubItem.m_strComment = lpSubComment;
  418. else
  419. tagSubItem.m_strComment = _T("");
  420. if ( lpSubReplease )
  421. tagSubItem.m_strReplease = lpSubReplease;
  422. else
  423. tagSubItem.m_strReplease = _T("");
  424. if ( nIndex != -1 )
  425. m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(tagSubItem);
  426. else
  427. AfxMessageBox(_T("锟斤拷锟截筹拷锟斤拷"));
  428. }
  429. xml.OutOfElem();// 退出items;
  430. xml.OutOfElem();// 退出product;
  431. break;
  432. }
  433. }
  434. xml.OutOfElem();// 退出根结点;
  435. if ( !xml.Save(GetPath()))
  436. {
  437. return FALSE;
  438. }
  439. return TRUE;
  440. }
  441. //////////////////////////////////////////////////////////////////////////
  442. // CResultVgProduct类实现;
  443. BOOL CResultVgProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */)
  444. {
  445. SetXMLPath(lpXMLPath);
  446. CMarkup xml;
  447. if ( !xml.Load(GetPath()) )
  448. {
  449. return FALSE;
  450. }
  451. m_bLoad = TRUE;
  452. m_AryItems.RemoveAll();
  453. if ( !xml.FindElem() )
  454. return FALSE;
  455. if ( !xml.IntoElem() )
  456. return FALSE;
  457. while( xml.FindElem(_T("n8vg_product")) )
  458. {
  459. CItem tagitem;
  460. xml.FindChildElem(_T("id"));
  461. tagitem.m_strProductID = xml.GetChildData();
  462. xml.FindChildElem(_T("comment"));
  463. tagitem.m_strProductComment = xml.GetChildData();
  464. xml.FindChildElem(_T("name"));
  465. tagitem.m_strProductName = xml.GetChildData();
  466. xml.FindChildElem(_T("width"));
  467. tagitem.m_strProductWidth = xml.GetChildData();
  468. xml.FindChildElem(_T("height"));
  469. tagitem.m_strProductHeight = xml.GetChildData();
  470. xml.IntoElem();
  471. xml.FindElem(_T("items"));
  472. xml.IntoElem();
  473. while ( xml.FindElem(_T("item")) )
  474. {
  475. CString strSubID;
  476. xml.FindChildElem(_T("id"));
  477. strSubID = xml.GetChildData();
  478. tagitem.m_ArySubItems.push_back(strSubID);
  479. }
  480. xml.OutOfElem();//退出item;
  481. xml.OutOfElem();//退出items;
  482. m_AryItems.Add(tagitem);
  483. }
  484. xml.OutOfElem();//退出product;
  485. return TRUE;
  486. }
  487. BOOL CResultVgProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName)
  488. {
  489. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
  490. return FALSE;
  491. BOOL bExists = FALSE;
  492. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  493. {
  494. CItem &tagItem = m_AryItems.ElementAt(i);
  495. if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 ||
  496. tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
  497. {
  498. bExists = TRUE;
  499. break;
  500. }
  501. }
  502. return bExists;
  503. }
  504. BOOL CResultVgProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight)
  505. {
  506. if ( !IsPathExists() )
  507. return FALSE;
  508. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0'))
  509. return FALSE;
  510. if ( !m_bLoad )
  511. {
  512. if( !LoadXML() )
  513. return FALSE;
  514. }
  515. if ( IsItemExists(lpID, lpName) )
  516. {
  517. return FALSE;
  518. }
  519. CMarkup xml;
  520. if ( !xml.Load(GetPath()) )
  521. return FALSE;
  522. if ( !xml.FindElem() )
  523. return FALSE;
  524. if ( !xml.IntoElem() )
  525. return FALSE;
  526. xml.FindElem(_T("n8vg_product"));
  527. xml.AddElem(_T("n8vg_product"));
  528. xml.AddChildElem(_T("id"), lpID);
  529. xml.AddChildElem(_T("comment"), lpComment);
  530. xml.AddChildElem(_T("name"), lpName);
  531. if (lpWidth)
  532. xml.AddChildElem(_T("width"), lpWidth);
  533. else
  534. xml.AddChildElem(_T("width"), _T("0"));
  535. if ( lpHeight)
  536. xml.AddChildElem(_T("height"), lpHeight);
  537. else
  538. xml.AddChildElem(_T("height"), _T("0"));
  539. xml.AddChildElem(_T("items"));
  540. xml.OutOfElem();//退出根结点;
  541. if ( !xml.Save(GetPath()))
  542. {
  543. return FALSE;
  544. }
  545. CItem tagItem;
  546. tagItem.m_strProductID = lpID;
  547. tagItem.m_strProductName = lpName;
  548. if ( lpComment )
  549. tagItem.m_strProductComment = lpComment;
  550. else
  551. tagItem.m_strProductComment = _T("");
  552. if ( lpWidth )
  553. tagItem.m_strProductWidth = lpWidth;
  554. else
  555. tagItem.m_strProductWidth = _T("0");
  556. if ( lpHeight )
  557. tagItem.m_strProductHeight = lpHeight;
  558. else
  559. tagItem.m_strProductHeight = _T("0");
  560. m_AryItems.Add(tagItem);
  561. return TRUE;
  562. }
  563. BOOL CResultVgProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID)
  564. {
  565. if ( !IsPathExists() )
  566. return FALSE;
  567. if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0'))
  568. return FALSE;
  569. if ( !m_bLoad )
  570. {
  571. if( !LoadXML() )
  572. return FALSE;
  573. }
  574. if ( !IsItemExists(lpID, lpName) )
  575. {
  576. return FALSE;
  577. }
  578. CMarkup xml;
  579. if ( !xml.Load(GetPath()) )
  580. return FALSE;
  581. if ( !xml.FindElem() )
  582. return FALSE;
  583. if ( !xml.IntoElem() )
  584. return FALSE;
  585. while( xml.FindElem(_T("n8vg_product")) )
  586. {
  587. CString strID;
  588. CString strName;
  589. if ( xml.FindChildElem(_T("id")) )
  590. {
  591. strID = xml.GetChildData();
  592. }
  593. if ( xml.FindChildElem(_T("name")) )
  594. {
  595. strName = xml.GetChildData();
  596. }
  597. if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 )
  598. {
  599. xml.IntoElem(); // 进入product;
  600. xml.FindElem(_T("items"));
  601. xml.IntoElem();// 进入items;
  602. CString strSubID;
  603. CString strSubComment;
  604. CString strSubReplease;
  605. BOOL bSubItemExists = FALSE;
  606. while ( xml.FindElem(_T("item")) )
  607. {
  608. if ( xml.FindChildElem(_T("id")) )
  609. {
  610. strSubID = xml.GetChildData();
  611. if ( strSubID.CompareNoCase(lpSubID) == 0 )
  612. {// 存在子结点;
  613. bSubItemExists = TRUE;
  614. break;
  615. }
  616. }
  617. }
  618. if ( !bSubItemExists )
  619. {
  620. xml.AddElem(_T("item"));
  621. xml.AddChildElem(_T("id"), lpSubID);
  622. int nIndex = -1;
  623. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  624. {
  625. CItem &tagItem = m_AryItems.ElementAt(i);
  626. if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 )
  627. {
  628. nIndex = i;
  629. break;
  630. }
  631. }
  632. if ( nIndex != -1 )
  633. m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(lpSubID);
  634. else
  635. AfxMessageBox(_T("锟斤拷锟截筹拷锟斤拷"));
  636. }
  637. xml.OutOfElem();// 退出items;
  638. xml.OutOfElem();// 退出product;
  639. break;
  640. }
  641. }
  642. xml.OutOfElem();// 退出根结点;
  643. if ( !xml.Save(GetPath()))
  644. {
  645. return FALSE;
  646. }
  647. return TRUE;
  648. }
  649. //////////////////////////////////////////////////////////////////////////
  650. // CReusltItem类实现;
  651. BOOL CResultItem::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ )
  652. {
  653. SetXMLPath(lpXMLPath);
  654. CMarkup xml;
  655. if ( !xml.Load(GetPath()) )
  656. {
  657. return FALSE;
  658. }
  659. m_bLoad = TRUE;
  660. m_AryItems.RemoveAll();
  661. if ( !xml.FindElem() )
  662. return FALSE;
  663. if ( xml.IntoElem() )
  664. {
  665. while ( xml.FindElem(_T("item")) )
  666. {
  667. CItem tagItem;
  668. xml.FindChildElem(_T("bDel"));
  669. tagItem.m_strDel = xml.GetChildData();
  670. xml.FindChildElem(_T("bPage"));
  671. tagItem.m_strPage = xml.GetChildData();
  672. xml.FindChildElem(_T("path"));
  673. tagItem.m_strPath = xml.GetChildData();
  674. xml.FindChildElem(_T("comment"));
  675. tagItem.m_strComment = xml.GetChildData();
  676. xml.FindChildElem(_T("deleted"));
  677. tagItem.m_strDeleted = xml.GetChildData();
  678. m_AryItems.Add(tagItem);
  679. }
  680. xml.OutOfElem();
  681. }
  682. return TRUE;
  683. }
  684. BOOL CResultItem::IsItemExists(IN LPCTSTR lpPath)
  685. {
  686. if ( lpPath == NULL || lpPath[0] == _T('\0'))
  687. return FALSE;
  688. BOOL bExists = FALSE;
  689. for ( int i = 0; i < m_AryItems.GetSize(); i++ )
  690. {
  691. CItem &tagItem = m_AryItems.ElementAt(i);
  692. if ( tagItem.m_strPath.CompareNoCase(lpPath) == 0 )
  693. {
  694. bExists = TRUE;
  695. break;
  696. }
  697. }
  698. return bExists;
  699. }
  700. BOOL CResultItem::InsertItem(IN LPCTSTR lpPath, IN LPCTSTR lpComment, IN LPCTSTR lpDel, IN LPCTSTR lpPage)
  701. {
  702. return TRUE;
  703. }
  704. //////////////////////////////////////////////////////////////////////////
  705. // CAlbum类实现;
  706. BOOL CAlbum::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ )
  707. {
  708. SetXMLPath(lpXMLPath);
  709. CMarkup xml;
  710. if ( !xml.Load(GetPath()) )
  711. {
  712. return FALSE;
  713. }
  714. m_bLoad = TRUE;
  715. m_AryPages.RemoveAll();
  716. if ( !xml.FindElem() )
  717. return FALSE;
  718. if ( !xml.IntoElem() )
  719. return FALSE;
  720. if ( xml.FindElem(_T("N8Pages")) )
  721. {
  722. xml.IntoElem();// 进入N8Pages;
  723. while( xml.FindElem(_T("N8Page")) )
  724. {
  725. CPageItem tagItem;
  726. tagItem.m_strFileName = xml.GetAttrib(_T("FileName"));
  727. tagItem.m_strtplid = xml.GetAttrib(_T("tplid"));
  728. tagItem.m_strtplname = xml.GetAttrib(_T("tplname"));
  729. xml.IntoElem();
  730. if ( xml.FindElem(_T("CellList")) )
  731. {
  732. while ( xml.FindChildElem(_T("Cell")) )
  733. {
  734. CString strImg = xml.GetChildAttrib(_T("FileName"));
  735. tagItem.m_vtImgs.push_back(strImg);
  736. }
  737. }
  738. xml.OutOfElem();//退出CellList;
  739. m_AryPages.Add(tagItem);
  740. }
  741. xml.OutOfElem();// 退出N8Pages;
  742. }
  743. xml.OutOfElem();//退出根结点;
  744. return TRUE;
  745. }
  746. //////////////////////////////////////////////////////////////////////////
  747. // 选版完成结果;
  748. BOOL CResultXml::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ )
  749. {
  750. SetXMLPath(lpXMLPath);
  751. CMarkup xml;
  752. if ( !xml.Load(GetPath()) )
  753. {
  754. return FALSE;
  755. }
  756. m_bLoad = TRUE;
  757. m_AryItems.RemoveAll();
  758. if ( !xml.FindElem() )
  759. return FALSE;
  760. if ( !xml.IntoElem() )
  761. return FALSE;
  762. if ( xml.FindElem(_T("staffid")))
  763. {
  764. m_strStaffID = xml.GetData();
  765. }
  766. if ( xml.FindElem(_T("designer")))
  767. {
  768. m_strDesigner = xml.GetData();
  769. }
  770. if ( xml.FindElem(_T("clientFolder")))
  771. {
  772. m_strClientFolder = xml.GetData();
  773. }
  774. if ( xml.FindElem(_T("date")))
  775. {
  776. m_strDate = xml.GetData();
  777. }
  778. while( xml.FindElem(_T("PageTpl")) )
  779. {
  780. CItem tagItem;
  781. xml.FindChildElem(_T("tplid"));
  782. tagItem.m_strTplid = xml.GetChildData();
  783. xml.FindChildElem(_T("tplname"));
  784. tagItem.m_strTplname = xml.GetChildData();
  785. xml.FindChildElem(_T("prodid"));
  786. tagItem.m_strProdid = xml.GetChildData();
  787. m_AryItems.Add(tagItem);
  788. }
  789. xml.OutOfElem();//退出根结点;
  790. return TRUE;
  791. }
  792. };