今日、私がLINQに触れるのは初めてなので、私が初心者であると言うのは控えめな表現です。したがって、私がやろうとしているのは、STAT要素とその属性の値を解析することです。私のサンプルXMLは次のようになります。
<ILS TGT="00-25-CE-94-00-05" PID="404001C5354144E4DA40E01F5000002" ORGCODE="00010019" xmlns="Mytest/v1.0">
<STAT TIME="000000018" TYPE="SYS" FIELD="PWR_V" VAL="1196"/>
<STAT TIME="000000018" TYPE="CAN" NID="65" FIELD="LAST_EC" VAL="EC_HEARTBEAT_TIMEOUT"/>
<STAT TIME="000000018" TYPE="NWK" FIELD="W_RSSI" VAL="-85"/>
<EVT TIME="0000000017" TYPE="ACC" SUBTYPE="GRANTED" CRDT="DPIN" CRED1="1212"/>
<EVT TIME="0000000018" TYPE="ACC" SUBTYPE="GRANTED" CRDT="DPIN" CRED1="1212" CRED2="2345"/>
<EVT TIME="0000000019" TYPE="ACC" SUBTYPE="DENIED" CRDT="OCRD" CRED1="0000DE0871"/>
<EVT TIME="0000000020" TYPE="ACC" SUBTYPE="GRANTED" CRDT="DCRD" CRED1="0000DE0871" CRED2="2345"/>
<EVT TIME="0000000021" TYPE="CFG" SUBTYPE="RELOCK_TIME" VAL="300"/>
<EVT TIME="0000000022" TYPE="LOG" SUBTYPE="HB_TIMEOUT" VAL="65"/>
</ILS>
したがって、このボードを検索すると、私の質問に答える次の質問が見つかりました。しかし、私はそれを適用しましたが、何らかの理由でまったく結果が得られませんでした。誰かが私が間違ったことをざっと見て指摘することはできますか?
public static void ParseXML(string data)
{
try
{
XDocument xDoc = XDocument.Parse(data);
XElement root = xDoc.Root;
Console.WriteLine("TGT: " + root.Attribute("TGT").Value + "\n");
Console.WriteLine("PID: " + root.Attribute("PID").Value + "\n");
Console.WriteLine("ORGCODE: " + root.Attribute("ORGCODE").Value + "\n");
Console.WriteLine("xmlns: " + root.Attribute("xmlns").Value + "\n");
//Everything above this line is good, I was able to get the print out.
var eleSTAT = from node in xDoc.Descendants("STAT")
select new
{
attrTIME = node.Attribute("TIME").Value,
attrTYPE = node.Attribute("TYPE").Value,
attrFIELD = node.Attribute("FIELD").Value,
attrVAL = node.Attribute("VAL").Value,
};
//When I run my code, it never got into this foreach loop, aas if eleSTAT is empty
foreach (var s in eleSTAT)
{
Console.WriteLine("TIME: " + s.attrTIME + "\n");
Console.WriteLine("TYPE: " + s.attrTYPE + "\n");
Console.WriteLine("FIELD: " + s.attrFIELD + "\n");
Console.WriteLine("VAL: " + s.attrVAL + "\n");
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
そして最後の質問ですが、複数のSTAT要素があるので、上記は機能しますか?4つのSTAT要素すべてとそれらの属性を返してもらいたい。これはある種のループで行わなければならないと思いますか?私のforeachループはすでにこれを行うべきだと言っているのは正しいですか?