我一直在尝试从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
答案 0 :(得分:0)
如果您可以使用System.Linq.XDocument获得正确的引用,则可以执行以下操作:
string idValue = xDocument.XPathSelectElement("//EnvioDTE/SetDTE")
.Attributes().SingleOrDefault(a => a.Name == "ID").Value;