簡體   English   中英

C#解析XML子節點

[英]C# Parse XML Child Nodes

我有一個龐大的XML文件; 太大了,我無法使用任何GUI程序打開。

我正在編寫一個小程序來解析文檔中所需的信息。

我有一個讀取文件的功能,並為每個節點寫入控制台:

 XDocument doc = XDocument.Load(@"c:\Events\Import\events.xml");
                var i = 0;


                foreach (XElement el in doc.Root.Elements())
                {

                    i++;
                   Console.WriteLine(el.FirstNode);

                }Console.ReadLine();
                }

這將返回以下結構的XML:

<System>
  <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-A5BA-3E3B0328C30D}'/>
  <EventID>4907</EventID>
  <Version>0</Version>
  <Level>0</Level>
  <Task>13568</Task>
  <Opcode>0</Opcode>
  <Keywords>0x8020000000000000</Keywords>
  <TimeCreated SystemTime='2015-03-29T14:47:06.505465800Z'/>
  <EventRecordID>195943</EventRecordID><Correlation/>
  <Execution ProcessID='808' ThreadID='828'/>
  <Channel>Security</Channel>
  <Computer>somecomputer.com</Computer>
  <Security/>
</System>

我如何才能寫出僅編寫EventID子節點的函數?

如果您的xml很大,則XmlReader通常比XmlDocument更好。 XmlReader基於流,並且不會在內存中加載完整的Xml。 您可以使用xmlreader的ReadToFollowing方法來實現相同的效果,如下所示: https ://msdn.microsoft.com/zh-cn/library/cc189056(v=vs.95).aspx

您可以通過XmlLinq通過以下方式獲取元素:

 XDocument doc = XDocument.Load(@"c:\Events\Import\events.xml");
         if(doc != null)
         {
            var elements =  from el in doc.Element("System").Elements()
             where el.Name == ("EventID")
             select el;
             foreach (XElement item in elements)
             {
                 Console.WriteLine(item.Value);

             }    
         }

         Console.ReadLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM