2017-07-26 100 views
-1

我做了研究並發現了大約10個不同的主題,提出了類似的問題。我還發現了不同的方式來做到這一點:linq,xpath等C#xml文檔按屬性查找值

我嘗試了所有這些,但我從來沒有得到任何結果。它總是'空'。

所以這裏是我的xml;我想OpCorrelation作爲字符串

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
    <Provider Name="Microsoft-Windows" Guid="{123}" /> 
    <EventID>12</EventID> 
    <Version>0</Version> 
    <Level>0</Level> 
    <Task>1</Task> 
    <Opcode>0</Opcode> 
    <Keywords>0x1110000000000000</Keywords> 
    <TimeCreated SystemTime="2017-07-26T11:08:06.899918600Z" /> 
    <EventRecordID>3333</EventRecordID> 
    <Correlation /> 
    <Execution ProcessID="2" ThreadID="3" /> 
    <Channel>Security</Channel> 
    <Computer>test</Computer> 
    <Security /> 
</System> 
<EventData> 
    <Data Name="OpCorrelationID">{abc}</Data> 
    <Data Name="AppCorrelationID">-</Data> 
    <Data Name="SubjectUserSid">123-S-123</Data> 
    <Data Name="SubjectUserName">TestUser</Data> 
    <Data Name="SubjectDomainName">TEST</Data> 
    <Data Name="SubjectLogonId">0x3a111</Data> 
    <Data Name="DSName">test.local</Data> 
    <Data Name="DSType">%%14111</Data> 
    <Data Name="ObjectDN">cn=bbbbb bb. bbb,OU=test,OU=Test123,DC=test,DC=local</Data> 
    <Data Name="ObjectGUID">{DF0F5628-70DA-4AC4-B72E-111111111}</Data> 
    <Data Name="ObjectClass">user</Data> 
    <Data Name="AttributeLDAPDisplayName">pwdLastSet</Data> 
    <Data Name="AttributeSyntaxOID">2.5.5.16</Data> 
    <Data Name="AttributeValue">131455408816821756</Data> 
    <Data Name="OperationType">%%14675</Data> 
</EventData> 

,這裏是我試過的代碼:

string OpCorrelationID = (string)XDocument.Parse(record.ToXml()).Descendants("Data").FirstOrDefault(d => (string)d.Attribute("Name") == "OpCorrelationID"); 

string OpCorrelationID = XDocument.Parse(record.ToXml()).XPathSelectElement("descendant::Data[@Name='OpCorrelationID']").Value; 

回答

-1

刪除從 「數據」後代,它的作品。

0

只是增值屬性( 「名稱」) - 屬性( 「名稱」)值== 「水木清華」