我从未多次使用XML,需要一些帮助来读取复杂的文件。

我试图获得嵌套在: outputTree\command\heading\pivotTable\dimension\category\dimension\category\dimension\group\category\call:Text(number)中的数字。
我只是不知道该怎么做。如果有人能向我展示一些基本知识,这将是有帮助的,所有的例子,我看到的是非常基本的,没有那么多的水平,所以我有问题,了解如何达到这个水平。
谢谢。
发布于 2013-11-22 15:39:55
您可以使用XPath查询。根据文档的结构,这将为您提供所需的精确值:
var xml = XDocument.Load(@"c:\path\to\file.xml");
var nsManager = new XmlNamespaceManager(new NameTable());
nsManager.AddNamespace(
"oms",
"http://www.ibm.com/software/analytics/spss/xml/oms");
var cell = xml.XPathSelectElement(
"oms:outputTree/oms:command[@text='Regression']/" +
"oms:heading[@text='uid = 1015984.00']/" +
"oms:pivotTable[@text='Coefficients']/" +
"oms:dimension/oms:category/oms:dimension/oms:category/" +
"oms:dimension/oms:group/oms:category/oms:cell",
nsManager);
var number = (decimal)cell.Attribute("number");
Console.WriteLine(number);必要时调整。您将需要这些进口品:
using System.Xml.Linq;
using System.Xml.XPath;发布于 2013-11-22 15:33:11
与这个答案一样,您可以直接使用高级XPath筛选器选择XML节点。
例如:
var document = new XmlDocument();
document.Load("<fileName>");
XmlNode node = document.SelectSingleNode("outputTree/command/heading[@text='uid = 1015984.00']/pivotTable[@text='Coefficients']/dimension[@text='Model']");等。
有关示例列表,请参阅此列表:http://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx
发布于 2013-11-22 16:10:33
我想我最终会这样做,并在其中添加一些if语句来捕获我正在寻找的数据:
XmlTextReader reader = new XmlTextReader("c:/temp/descriptives_table.xml");
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
while (reader.MoveToNextAttribute()) // Read the attributes.
Console.Write(" " + reader.Name + "='" + reader.Value + "'");
Console.WriteLine(">");
break;
case XmlNodeType.Text: //Display the text in each element.
Console.WriteLine(reader.Value);
break;
case XmlNodeType.EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}谢谢大家的帮助!把我引向这条路!
https://stackoverflow.com/questions/20148191
复制相似问题