Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#xml文档按属性查找值_C#_Xml_Linq_Xpath - Fatal编程技术网

C#xml文档按属性查找值

C#xml文档按属性查找值,c#,xml,linq,xpath,C#,Xml,Linq,Xpath,我做了研究,发现大约有10条不同的线索提出了类似的问题。我还发现了不同的方法:linq、xpath等 我都试过了,但都没有结果。它总是“null” 这是我的xml;我希望操作相关作为字符串: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows" Guid="{123}" /> &

我做了研究,发现大约有10条不同的线索提出了类似的问题。我还发现了不同的方法:linq、xpath等

我都试过了,但都没有结果。它总是“null”

这是我的xml;我希望操作相关作为字符串

<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>


从子体中删除了“数据”,它可以正常工作。

您可以尝试使用动态方法吗?

只需向属性(“名称”)添加值-属性(“名称”)。值==“smth”

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;