C# 将xml粘贴到控制台
我需要从XML文件中获取数据SHILS\u V。我读了.xml XML代码,例如:C# 将xml粘贴到控制台,c#,xml,C#,Xml,我需要从XML文件中获取数据SHILS\u V。我读了.xml XML代码,例如: <SVED_PR_GS> <ZGLV> <VERSION>99</VERSION> <DATA>9999</DATA> <FILENAME>1234</FILENAME> <FIRSTNAME>
<SVED_PR_GS>
<ZGLV>
<VERSION>99</VERSION>
<DATA>9999</DATA>
<FILENAME>1234</FILENAME>
<FIRSTNAME>1234</FIRSTNAME>
</ZGLV>
<SVD>
<CODE></CODE>
<YEAR></YEAR>
<MONTH></MONTH>
</SVD>
<SV_PR_GS>
<OBSV>
<N_ZAP>1</N_ZAP>
<MO_SV_V>12345</MO_SV_V>
<SNILS_V>123456789</SNILS_V>
</OBSV>
</SV_PR_GS>
</SVED_PR_GS>
读取xml的代码:
XmlDocument xml = new XmlDocument();
xml.Load(filename);
Console.WriteLine("this");
XmlNodeList nodes = xml.GetElementsByTagName("SVED_PR_GS/SV_PR_GS");
foreach (XmlNode n in nodes)
{
Console.WriteLine("in loop");
XmlNode snils_v = n["OBSV/SNILS_V"];
Console.WriteLine("Snils V: " + snils_v);
}
问题在哪里?
如何从SNILS_V获取信息?从XML中选择单个节点。您需要使用SelectSingleNode方法访问该对象
xml.SelectSingleNode("xpath for node")
要获取节点集合,可以编写
xml.SelectNodes("xpath for node collection")
GetElementsByTagName
需要一个标记名,而不是XPath表达式,“SV_PR_GS”将在那里工作。XmlNode实例名为n的索引器也是如此,这个XPath将无法工作n[“OBSV/SNILS\u V”]
,在那里也使用标记名,但您必须在那里处理额外的OBSV子项
以下是为我生成输出的改编代码:
XmlNodeList nodes = xml.GetElementsByTagName("SV_PR_GS");
foreach (XmlNode n in nodes)
{
Console.WriteLine("in loop");
// first get the OBSV element
XmlNode obsv = n["OBSV"];
// now we can reach the other childs
XmlNode snils_v = obsv["SNILS_V"];
// Value will be null for XmlElement types, use InnerText instead
Console.WriteLine("Snils V: {0}" , snils_v.InnerText);
}
请注意,Value
属性将为XmlElement类型的XmlNode返回null。文件中规定:
空。可以使用XmlElement.InnerText或XmlElement.InnerXml属性访问元素节点的值
由于SNILS\u V元素似乎只包含一个值,因此
InnerText
在这里是合适的。您应该能够获得如下值:
XmlDocument xml = new XmlDocument();
xml.Load(filename);
Console.WriteLine("this");
XmlNodeList nodes = xml.GetElementsByTagName("OBSV");
foreach (XmlNode n in nodes)
{
Console.WriteLine("in loop");
XmlNode snils_v = n.SelectSingleNode("SNILS_V");
Console.WriteLine("Snils V: " + snils_v.InnerText);
}
请尝试
snils\u v.value
。。。