首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlReader的问题

XmlReader的问题
EN

Stack Overflow用户
提问于 2013-11-22 15:13:23
回答 3查看 97关注 0票数 0

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

我试图获得嵌套在: outputTree\command\heading\pivotTable\dimension\category\dimension\category\dimension\group\category\call:Text(number)中的数字。

我只是不知道该怎么做。如果有人能向我展示一些基本知识,这将是有帮助的,所有的例子,我看到的是非常基本的,没有那么多的水平,所以我有问题,了解如何达到这个水平。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-22 15:39:55

您可以使用XPath查询。根据文档的结构,这将为您提供所需的精确值:

代码语言:javascript
复制
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);

必要时调整。您将需要这些进口品:

代码语言:javascript
复制
using System.Xml.Linq;
using System.Xml.XPath;
票数 0
EN

Stack Overflow用户

发布于 2013-11-22 15:33:11

这个答案一样,您可以直接使用高级XPath筛选器选择XML节点。

例如:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2013-11-22 16:10:33

我想我最终会这样做,并在其中添加一些if语句来捕获我正在寻找的数据:

代码语言:javascript
复制
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;
                }
            }

谢谢大家的帮助!把我引向这条路!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20148191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档