1. 程式人生 > 實用技巧 >C# 操作xml檔案操作

C# 操作xml檔案操作

1.通過遞迴獲取資料夾下的所有xml檔案,並提取xml中內容

xml格式如下

<?xml version="1.0" encoding="utf-8"?>
<ROOT>
    <HEADDATA>
        <FROMPLATFORMCODE>E5119003117</FROMPLATFORMCODE>
        <TOPLATFORMCODE>P540</TOPLATFORMCODE>
        <DATA_NO>50</DATA_NO>
        <DATA_EN
>PUECT</DATA_EN> <DATA_CN></DATA_CN> <DATA_TYPE>1</DATA_TYPE> <DATA_KEY>24506689-938f-4517a6</DATA_KEY> <TIMESTAMP>20190801084902</TIMESTAMP> <VERSION>2.0</VERSION> </HEADDATA> <DESCONTEXT
> <PROGRAM_BUDGET>188000.000000</PROGRAM_BUDGET> <RELATE_CODE>0</RELATE_CODE> <PURCHASE_PROJECT_CODE>巴中競採【2019】279-1號</PURCHASE_PROJECT_CODE> <PURCHASE_PROJECT_NAME>計算機(臺式電腦)、伺服器、交換裝置、其他辦公用品採購</PURCHASE_PROJECT_NAME> <UNIFIED_DEAL_CODE
>D01-12513700062370904X-801-033087-T</UNIFIED_DEAL_CODE> <INVEST_PROJECT_CODE /> <TENDER_PROJECT_TYPE>D01</TENDER_PROJECT_TYPE> </DESCONTEXT> <DESBINARYS /> </ROOT>
View Code

需要查詢的路徑

List<keyValue> diclist = new List<keyValue>();

  

string path = @"E:\\網站釋出\\ToprovinceFile\\File";
getDirectory(path);

  

public void getDirectory(string path)
    {
        getFileName(path);
        DirectoryInfo root = new DirectoryInfo(path);
        foreach (DirectoryInfo d in root.GetDirectories())
        {
            getDirectory(d.FullName);
        }
    }

  

public void getFileName(string path)
    {
        DirectoryInfo root = new DirectoryInfo(path);
        foreach (FileInfo item in root.GetFiles())
        {
            if (item.Name.Contains("550.xml"))
            {
                XmlDataDocument fileDoc = new XmlDataDocument();
                fileDoc.Load(Common.MapPath(item.FullName));
                var fileNode = fileDoc.SelectSingleNode("/ROOT");//獲取根目錄
                var str = fileNode.SelectSingleNode("HEADDATA/DATA_KEY").InnerText;//獲取note節點內容
                var key = fileNode.SelectSingleNode("DESCONTEXT/UNIFIED_DEAL_CODE").InnerText;
                //<UNIFIED_DEAL_CODE>D01-12513700062370904X-20180423-026568-E</UNIFIED_DEAL_CODE>
                diclist.Add(new keyValue() { key = key, vallue = str });
            }
        }
    }

 2.string格式的xml檔案 提取其中部分內容

stringxml格式

<?xml version="1.0"?> 
<DESCONTEXT>
    <PROGRAM_BUDGET>395000.000000</PROGRAM_BUDGET>
    <RELATE_CODE>0</RELATE_CODE>
    <PRICE_FORM_CODE>1</PRICE_FORM_CODE>
    <OTHER_PROGRAM_BUDGET>395000</OTHER_PROGRAM_BUDGE>
    <PLATFORM_CODE>12513700062370904X</PLATFORM_CODE>
    <PUB_SERVICE_PLAT_CODE>12513700062370904X</PUB_SERVICE_PLAT_CODE>
    <DATA_TIMESTAMP>20190520085121</DATA_TIMESTAMP>
    <REGION_CODE>511900</REGION_CODE>
    <PURCHASE_PROJECT_CODE>巴中競採【2019】172-1號</PURCHASE_PROJECT_CODE>
    <PURCHASE_PROJECT_NAME>計算機(臺式電腦)、投影儀、交換裝置、其他辦公用品採購</PURCHASE_PROJECT_NAME>
    <UNIFIED_DEAL_CODE>D01-12513700062370904X-20190520-032086-F</UNIFIED_DEAL_CODE>
    <INVEST_PROJECT_CODE/>
    <TENDER_PROJECT_TYPE>D01</TENDER_PROJECT_TYPE>
</DESCONTEXT>
View Code

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml("以上示例xml");
var fileNode = xdoc.SelectSingleNode("/DESCONTEXT");
var str = fileNode.SelectSingleNode("UNIFIED_DEAL_CODE").InnerText;