[英]Determing tag close with XDocument
我有一個XML文檔,可以循環瀏覽並將其解析到控制台。 一切正常,但我需要能夠確定標記從父節點關閉的位置。 例如:
<activity date="2013-07-05T06:42:35" name="open" host="55.555.20.5554">
<user id="EU-user@email.co.uk" name="J Bloggs" memberType="E" />
<storageObject docId="4130-7447-0000" name="Documents name" size="1903885" fileExtension="pdf">
<cabinet name="Client Cabinet">NG-XXXXXX</cabinet>
<Matter>0000</Matter>
<Client>X54654</Client>
<Author>L Bloggs</Author>
</storageObject>
</activity>
在每個活動結束時,我希望能夠在控制台輸出上輸出一行以確定每個活動結束的位置。
有沒有一種方法可以確定何時使用XDocument發生元素“關閉”標簽?
您無需確定標簽在哪里關閉。 XDocument將為您確定:
var activities = from a in xdoc.Descendants("activity")
let u = a.Element("user")
let so = a.Element("storageObject")
select new {
Date = (DateTime)a.Attribute("date"),
Name = (string)a.Attribute("name"),
User = new {
Id = (string)u.Attribute("id"),
Name = (string)u.Attribute("name")
},
Storage = new {
Client = (string)so.Element("Client")
}
//...
};
它創建可以迭代的強類型對象:
foreach(var activity in activities)
Console.WriteLine("{0} on {1}", activity.Name, activity.Date);
那個怎么樣:
// Load document into XDocument instance.
var doc = XDocument.Load("source.txt");
// query for all <activity> element.
var activities = doc.Root.Elements("activity");
// add XComment after each of them.
foreach (var a in activities)
{
a.AddAfterSelf(new XComment("------------"));
}
// Print document into console.
Console.WriteLine(doc.ToString());
每次</activity>
之后都打印<!--- - - - - - - - - - - - -->
</activity>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.