Если вы действительно должны (или хотите) использовать синтаксический анализ XML, то стоит обратить внимание на пространство имен в LINQ-to-SQL.
Вот пример того, как считывать список <Type>
узлов в узле <Table>
:
// create a XmlDocument
XmlDocument doc = new XmlDocument();
doc.Load(@"path-to-your-model.dbml");
// define the namespace to use
XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
mgr.AddNamespace("ns", "http://schemas.microsoft.com/linqtosql/dbml/2007");
// grab the list of all "type" nodes under a "table" node
XmlNodeList types = doc.SelectNodes("/ns:Database/ns:Table/ns:Type", mgr);
// iterate over all nodes found
foreach (XmlNode node in types)
{
string name = node.Attributes["Name"].Value;
// or do whatever else you need / want to do here
}
Надеюсь, это немного поможет!
Марк