2016-08-01 14 views
0

Das ist mein xml-CodeGet Linq mit

<?xml version="1.0" encoding="utf-8"?> 
<Event xmlns=""> 
<System> 
    <Provider Name="" /> 
    <EventID>4624</EventID> 
    <Version>0</Version> 
    <Level>0</Level> 
    <Task>12544</Task> 
    <Opcode>0</Opcode> 
    <Keywords>0x0000</Keywords> 
    <TimeCreated SystemTime="20Z" /> 
    <EventRecordID>911588</EventRecordID> 
    <Correlation /> 
    <Execution ProcessID="608" ThreadID="704" /> 
    <Channel>Security</Channel> 
    <Computer></Computer> 
    <Security /> 
    </System> 
<EventData> 
    <Data Name="SubjectUserSid">S-1-0-0</Data> 
    <Data Name="SubjectUserName">-</Data> 
    <Data Name="SubjectDomainName">-</Data> 
    <Data Name="SubjectLogonId">0x0</Data> 
    <Data Name="TargetUserSid">S1937-12707</Data> 
    <Data Name="TargetUserName"></Data> 

    </EventData> 
    </Event> 

I Name Attributwert und Elementwert aller Data Knoten

habe ich versucht, diese

, erhalten möchten
XmlDocument xmlDoc = new XmlDocument(); 
      try 
      { 
       xmlDoc.Load("C:\\Users\\bk.koc\\Desktop\\Gelenxml.xml"); 

       foreach (XmlNodeList node in xmlDoc.GetElementsByTagName("Data")) 
       { 
        MessageBox.Show(node.Attributes["Name"].Value); 
        MessageBox.Show(node["Name"].Value); 
       } 

Ich bekomme alle Namen, aber das gibt mir einen Fehler.

Eine nicht behandelte Ausnahme des Typs ‚System.NullReferenceException‘ aufgetreten in WindowsFormsApplication4.exe

Zusätzliche Informationen: Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Wie kann beheben, dass

+0

sehen Sie meinen aktualisierten Code, hoffe, dass dies Ihr Problem lösen wird – Mostafiz

Antwort

0

Sie können dieses

XDocument doc = XDocument.Load(@"C:\Users\bk.koc\Desktop\Gelenxml.xml"); 
var a = from m in doc.Descendants("EventData").Elements("Data") 
     select new 
      { 
      Name = m.Attribute("Name").Value, 
      Value = m.Value 

      }; 

erhalten dann

foreach (var v in a) 
    { 
     MessageBox.Show(v.Name); 
     MessageBox.Show(v.Value); 

    } 

aktualisieren ich verwendet habe, diese XML-

<?xml version="1.0" encoding="utf-8"?> 
<EventData> 
    <Data Name="SubjectUserSid">S-1-0-0</Data> 
    <Data Name="SubjectUserName">-</Data> 
    <Data Name="SubjectDomainName">-</Data> 
    <Data Name="SubjectLogonId">0x0</Data> 
</EventData> 
+0

Können Sie Ihren Code wiederherstellen ich denke, es wird funktionieren, aber einige Klammern Fehler geben mir kann ich nicht beheben. –

+0

ja es war, versuche jetzt – Mostafiz

+0

neuesten Code verwenden, vorheriger Code habe ein Problem – Mostafiz

0
node.Attributes["Name"] 

gibt die richtige XmlAttribute und Sie können die Value Eigenschaft dieses XmlAttribute Instanz zugreifen.

node["Name"] 

versucht, die erste Kind-Element namens "Name", zurückzukehren, aber da Ihre Data Tags, nullnode["Name"] kehrt nicht Elemente Kind haben. Wenn Sie versuchen, auf die Value-Eigenschaft von node["Name"] zuzugreifen, wird eine NullReferenceException ausgelöst.