无法使用C#解析XML数据

时间:2014-10-01 21:25:43

标签: c# xml xpath

我一直在尝试从XML文件中提取一个值,然后将其存储在同一个文件中,但是在另一个节点中,我尝试了我在网上找到的所有示例,读取了像地狱一样的XPath语法文档并且仍然无法让它发挥作用。

我必须使用<Documento ID="F60T33"> ID值(可能会有所不同)并将其复制到<Reference URI="#F60T33">

但如果我无法解析这些行,我甚至无法做到这一点,大多数情况下节点/变量/&#34;&#34;或者我得到一个&#34;对象引用未建立为对象实例错误&#34;。

以下是代码:

    // Create a new XML document.
        XmlDocument xmlDoc = new XmlDocument();
        // Load an XML file into the XmlDocument object.
        xmlDoc.PreserveWhitespace = true;
        xmlDoc.Load(pfile);

        //TEST !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROBLEMA

        XmlNodeList Documentos = xmlDoc.GetElementsByTagName("//Documento");
        XmlNodeList DatosDocumento = ((XmlElement)Documentos[0]).GetElementsByTagName("ID");

        foreach (XmlElement nodo in DatosDocumento)
        {

            int I = 0;

            XmlNodeList ID = nodo.GetElementsByTagName("ID");
            Console.WriteLine("Elemento nombre ... {0}}", ID[i].InnerText);

        }

        //
        XmlNodeList nodes = xmlDoc.SelectNodes("EnvioDTE");
        XmlNode nodesimple = xmlDoc.SelectSingleNode("EnvioDTE");
        Console.WriteLine("Lista Nodos: " + nodes.Count);
        Console.WriteLine("Nodo Simple: " + nodesimple.InnerText);
        foreach (XmlNode node in nodes)
        {
            string id = node.Attributes["ID"].InnerText;
            Console.WriteLine(id);

        }

我几乎可以肯定问题出在XPath语法上,但是我无法让它工作。

可悲的是,我无法使用XDocument作为我使用.NET 3.5执行此任务,我真的很感激一些帮助,通过行为道歉我的坏英语

由于XML文件太大,我将把它放在此URL上 http://puu.sh/bVNDc/31e4da5a26.xml

1 个答案:

答案 0 :(得分:0)

如果您可以使用System.Linq.XDocument获得正确的引用,则可以执行以下操作:

string idValue = xDocument.XPathSelectElement("//EnvioDTE/SetDTE")
     .Attributes().SingleOrDefault(a => a.Name == "ID").Value;