如何在 C# 中从 MS Project 的 XML 文件中获取文本?
How to get text from MS Project's XML file in C#?
我有一个在 MS Project 中创建的 XML 文件。是这样的:
我想在 "Resource" 节点中获取 UID 值。我试试这个:
var xmlDoc = new XmlDocument();
string strFileName = "Sample.xml";
xmlDoc.Load(strFileName);
XmlNodeList xnList = xmlDoc.SelectNodes("/Project/Resources/Resource");
foreach (XmlNode xn in xnList)
{
Console.WriteLine(xn["UID"].InnerText);
}
然而,xmlDoc.SelectNodes("/Project/Resources/Resource"); returns 什么都没有。怎么了?
MSPDI 不是一种令人愉快的 XML 格式。您可能会发现 MPXJ 的 C# 变体更易于使用来提取数据。您会在 NuGet 上找到它!
您必须添加命名空间:
var man = new XmlNamespaceManager(xmlDoc.NameTable);
man.AddNamespace("ns", "http://schemas.microsoft.com/project");
XmlNodeList xnList = xmlDoc.SelectNodes("/ns:Project/ns:Resources/ns:Resource", man);
此外,您可以这样做:
var xnList = xmlDoc.SelectNodes("/ns:Project/ns:Resources/ns:Resource/ns:UID", man);
foreach (XmlNode xn in xnList)
{
Console.WriteLine(xn.InnerText);
}
我有一个在 MS Project 中创建的 XML 文件。是这样的:
我想在 "Resource" 节点中获取 UID 值。我试试这个:
var xmlDoc = new XmlDocument();
string strFileName = "Sample.xml";
xmlDoc.Load(strFileName);
XmlNodeList xnList = xmlDoc.SelectNodes("/Project/Resources/Resource");
foreach (XmlNode xn in xnList)
{
Console.WriteLine(xn["UID"].InnerText);
}
然而,xmlDoc.SelectNodes("/Project/Resources/Resource"); returns 什么都没有。怎么了?
MSPDI 不是一种令人愉快的 XML 格式。您可能会发现 MPXJ 的 C# 变体更易于使用来提取数据。您会在 NuGet 上找到它!
您必须添加命名空间:
var man = new XmlNamespaceManager(xmlDoc.NameTable);
man.AddNamespace("ns", "http://schemas.microsoft.com/project");
XmlNodeList xnList = xmlDoc.SelectNodes("/ns:Project/ns:Resources/ns:Resource", man);
此外,您可以这样做:
var xnList = xmlDoc.SelectNodes("/ns:Project/ns:Resources/ns:Resource/ns:UID", man);
foreach (XmlNode xn in xnList)
{
Console.WriteLine(xn.InnerText);
}