BOOL CXXDlg::GetXMLSingleValue(CString sPath,CString SN,CString &sResult,CString &sResult2,CString& sValue)
{
CFileFind file;
CString sFilePath,sFileName;
BOOL bFind;
sFileName = sPath+"\\CMLD_"+SN+"*.xml";
bFind = file.FindFile(sFileName);
if (bFind)
{
while (bFind)
{
bFind=file.FindNextFile();//必须加这个才能得到找到文件的名字
if(!file.IsDirectory() && !file.IsDots() && !file.IsSystem ())
{
sFilePath = file.GetFilePath();
CTime LastTime;
BOOL bResult = file.GetLastWriteTime(LastTime);
}
}
}
else
{
SaveReportTxt(_T("未找到文件"));
return FALSE;
}
CComPtr<IXMLDOMDocument> spDoc; //DOM
spDoc.CoCreateInstance(CLSID_DOMDocument);//
VARIANT_BOOL vb;
spDoc->load(CComVariant(sFilePath), &vb); //加载XML文件
CComPtr<IXMLDOMElement> spRootEle;
spDoc->get_documentElement(&spRootEle); //获取根节点
if (!spRootEle)
{
SaveReportTxt(_T("无根节点"));
return FALSE;
}
CComPtr<IXMLDOMNodeList> spNodeList;
CComPtr<IXMLDOMNode> spNode;
CComPtr<IXMLDOMNode> spNode2;
CComPtr<IXMLDOMNode> spNode3;
CComVariant varVal;
CComVariant varVal2;
CString str;
BSTR strBSTR;
spRootEle->selectSingleNode(OLESTR("/TestResults/ResultSet/@siteCode"), &spNode3); // 从根节点的子节点中选择名称为siteCode的节点
spNode3->get_nodeValue(&varVal); //获取节点值 //selectNodes("//TestResult") 从任意位置的节点中选择名称为 TestResult 的节点
sResult = COLE2CT(varVal.bstrVal);
spRootEle->selectSingleNode(OLESTR("/TestResults/ResultSet/TestResult/Outcome/@value"), &spNode);
spNode->get_nodeValue(&varVal2); //获取节点值
sResult2 = COLE2CT(varVal2.bstrVal);
//SelectNodes("//SubItemTest|//channel"),选择 SubItemTest 或 channel 节点。
spRootEle->selectSingleNode(OLESTR("//SubItemTest[@name='WL_Get']"), &spNode2); //选择拥有name="WL_Get"属性,名称为SubItemTest 的节点
if (spNode2 == 0x00)
{
SaveReportTxt("数据异常,更改日期再读取!");
return FALSE;
}
spNode2->get_text(&strBSTR); //波长节点值
str.Empty();
str = strBSTR;
sValue = str.Left(7);
return TRUE;
}
#import "msxml4.dll"
main()
{
CString str1,str2,str3,str4,str5;
str1 = "E:\\路径\\" \\ XML文件的路径,文件名、内容如下
str2= "131195J1362004455709";
bResult = GetXMLSingleValue(str1,str2,str3,str4,str5);
}
XML文件:文件名 CMLD_131195J1362004455709_SMARX1231-OC950-ZY_20210327115639_20210327115813.xml
<TestResults xmlns="http://www.ieee.org/ATML/2007/TestResults" xmlns:n2="http://www.altova.com/samplexml/other-namespace" xmlns:c="http://www.ieee.org/ATML/2007/02/Common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Personnel>
<SystemOperator ID="TEUSER188"/>
</Personnel>
<ResultSet ID="1" startDateTime="2021-03-27T11:56:39" endDateTime="2021-03-27T11:58:13" operationSequence="0" siteCode="MP2">
<Description>CMLD</Description>
<TestResult BoardFlag="0" ID="1">
<Outcome value="Passed"/>
</TestResult>
<ItemTest ID="1" name="OC950 C00-S-85C-COC POST BI" startDateTime="2021-03-27T11:56:39" endDateTime="2021-03-27T11:58:13">
<TestResult BoardFlag="0" ID="1" SerialNumber="131195J1362004455709" ValueFlag="0">
...
</TestResult>
<SubItemTest ID="1" name="MovePosition@Hisilicon LIV Test Position">
...
</SubItemTest>
<SubItemTest ID="2" name="GetCarrierID">
...
</SubItemTest>
<SubItemTest ID="3" name="GetSlotNum">
...
</SubItemTest>
<SubItemTest ID="4" name="Power Supply@On">
...
</SubItemTest>
<SubItemTest ID="5" name="BI_Set@Post BI">
...
</SubItemTest>
<SubItemTest ID="6" name="LIV">
...
</SubItemTest>
<SubItemTest ID="7" name="Leakage Current@pre test@LD">
...
</SubItemTest>
<SubItemTest ID="8" name="Ith_Get@Rough">
...
</SubItemTest>
<SubItemTest ID="9" name="Ith_Get@Precise">
...
</SubItemTest>
<SubItemTest ID="10" name="Ith_Get@Delta">
...
</SubItemTest>
<SubItemTest ID="11" name="Kink_Get">
...
</SubItemTest>
<SubItemTest ID="12" name="SE_Get">
...
</SubItemTest>
<SubItemTest ID="13" name="SE_Delta_Get">
...
</SubItemTest>
<SubItemTest ID="14" name="Power_Get@Ith-Precise">
...
</SubItemTest>
<SubItemTest ID="15" name="Power_Get@55">
...
</SubItemTest>
<SubItemTest ID="16" name="Power_Get@Delta">
...
</SubItemTest>
<SubItemTest ID="17" name="Ild_Max_Kink_Get">
...
</SubItemTest>
<SubItemTest ID="18" name="Vf@70">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1.591600</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1.000000:2.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="19" name="WL_Test@50">
...
</SubItemTest>
<SubItemTest ID="20" name="WL_Get">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1316.248000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1314.275000:1318.020000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="21" name="WL_2nd Get">
...
</SubItemTest>
<SubItemTest ID="22" name="WL_Delta_Get">
...
</SubItemTest>
<SubItemTest ID="23" name="WL_Channel_Get">
...
</SubItemTest>
<SubItemTest ID="24" name="Mode_Hop Meas@OC950">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>NaN</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1.000000:1.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="25" name="Mode_Hop Get@Step">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>0.388000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>0.000000:1.200000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="26" name="ModeHop_SMSR_Get@Ith+5">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>40.949247</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>30.000000:70.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="27" name="ModeHop_SMSR_Get@40">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>47.549586</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>35.000000:70.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="28" name="ModeHop_SMSR_Get@50">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>49.315801</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>35.000000:70.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="29" name="ModeHop_SMSR_Get@60">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>50.104519</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>35.000000:70.000000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="30" name="ModeHop_20dbWidth_Get@Ith+5">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>0.105280</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NaN:NaN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="31" name="ModeHop_20dbWidth_Get@40">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>0.100758</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>0.000000:0.300000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="32" name="ModeHop_20dbWidth_Get@50">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>0.100272</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>0.000000:0.300000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="33" name="ModeHop_20dbWidth_Get@60">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>0.098847</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>0.000000:0.300000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="34" name="ModeHop_WL_Get@Ith+5">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1315.356000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NaN:NaN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="35" name="ModeHop_WL_Get@40">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1315.744000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1314.275000:1318.020000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="36" name="ModeHop_WL_Get@50">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1316.064000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1314.275000:1318.020000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="37" name="ModeHop_WL_Get@60">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1316.424000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>1314.275000:1318.020000</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="38" name="ModeHopIldList">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>25.450/40.000/50.000/60.000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="39" name="ModeHopIldPowerList">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1.969/7.290/10.801/14.040</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="40" name="RthemalVldList">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1.180/1.311/1.401/1.490</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="41" name="RthemalPowerList">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1.730/6.305/9.272/11.745</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="42" name="RthemalWLList">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1315.356/1315.744/1316.064/1316.424</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="43" name="ThermalResistance">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>216.492</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="44" name="ThermalResistanceDelta">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>5.503</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="45" name="StationControlEnable">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>True</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="46" name="RetestEnable">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>False</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="47" name="ATEControlEnable">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>True</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="48" name="LD_ContactCheckVoltage">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>1.221</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="49" name="CouplingPower">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>-4.202</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="50" name="TimeControlEnable">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>True</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="51" name="MaxPower">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>22.816</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="52" name="ErrorItem">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>NULL</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="53" name="TotalTime">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>94.239</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="54" name="Temperature">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>95.000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="55" name="Slope">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>-6182.000</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="56" name="Intercept">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>-0.001</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
<SubItemTest ID="57" name="AllowTestSequence">
<TestResult BoardFlag="0" ID="1" SerialNumber="NoCode">
<Outcome value="Passed"/>
<Description>ZY-PreBI/ZY-PostBI/ZY-Golden/26-PreBI/26-PostBI/26-Golden/26-Snap</Description>
<TestData>
<c:Datum xsi:type="c:string">
<c:Value>NAN:NAN</c:Value>
</c:Datum>
</TestData>
</TestResult>
</SubItemTest>
</ItemTest>
</ResultSet>
<TestProgram Productline="Optical Network" Product="Opti-Electronics Platform">
...
</TestProgram>
<TestStation AteName="SmarX1231A5120" AteVersion="V800R002Build667"/>
<UUT UutType="hardware">
...
</UUT>
<WorkOrder>
...
</WorkOrder>
</TestResults>