<ndActivityLog repositoryId="AA-AAAA1AAA" repositoryName="Company Name" startDate="2013-07-05" endDate="2013-07-06">
<activity date="2013-07-05T06:42:35" name="open" host="00.00.00.00">
<user id="[email protected]" name="Joe Bloggs" memberType="I" />
<storageObject docId="0000-0000-0000" name="Opinion" size="356864" fileExtension="doc">
<cabinet name="Client and Matters">NG-5MIYABBV</cabinet>
<DocumentType>Legal Document</DocumentType>
<Author>Joe Bloggs</Author>
<Matter>1001</Matter>
<Client>R1234</Client>
</storageObject>
</activity>
</ndActivityLog>
Это пример XML. В документе содержится около 4000 элементов «деятельности» с различными уровнями контента. У некоторых есть элементы «Клиент» и «Материя», другие - нет. Чтобы думать об этом как о таблице, это были бы пустые ячейки, но заголовки столбцов все еще существуют.Сложный вложенный XML-анализ в C#
Мне по существу нужно проанализировать это в базе данных SQL, сохраняя структуру данных. Кроме того, если элемент не существует в некоторых примерах, он должен ссылаться на этот факт и оставить его «пустой ячейкой».
var doc = XDocument.Load(path + "\\" + file + ".xml");
var root = doc.Root;
foreach (XElement el in root.Elements())
{
// Console.WriteLine(el.Nodes());
// Console.WriteLine(el.Value);
//Console.WriteLine(" Attributes:");
foreach (XAttribute attr in el.Attributes())
{
Console.WriteLine(attr);
// Console.WriteLine(el.Elements("id"));
}
Console.WriteLine("---------------------------");
// foreach (XElement element in el.Elements())
// {
// Console.WriteLine(" {0}: {1}", element.Name, element.Value);
// }
}
//hold console open
Console.ReadLine();
}
Код до сих пор. Выходной сигнал показан ниже
date="2013-07-06T17:07:42"
name="open"
host="213.146.142.50
Мне в основном нужна вся информация, которую нужно извлечь, поэтому я могу хранить их по существу в виде таблицы. Я разумно новичок в синтаксическом анализе XML, поэтому любая помощь будет оценена по достоинству.
Есть ли особая причина, по которой вы хотите разобрать ее вручную? Почему бы не создать соответствующие классы C# и десериализовать его в эти классы? – derape
Почему бы вам не сериализовать его http://msdn.microsoft.com/en-us/library/58a18dwa.aspx – Krishna
@derape i был в предположении, что мне пришлось это делать с помощью 'XDocument' или LINQ –