从xml文件中提取数据
本文关键字:提取 数据 文件 xml | 更新日期: 2023-09-27 18:25:09
我有一个字符串XML,我想将其转换为实际的XML,并获取其值。
我的(字符串)XML文档如下所示:
<Folder>
<Files>
<File Id="123"
Size="111"
Name="abc"/>
</Files>
</Folder>
这就是我正在做的:
XmlDocument xml = new XmlDocument();
xml.LoadXml(stringXML);
XmlNodeList xnList = xml.SelectNodes("/Folder/Files");
foreach (XmlNode xn in xnList)
{
string a = xn["File Id"].InnerText;
}
这里,我的xml
变量(XmlDocument)在"InnerXml"属性中有我的XML:< Folder>< Files>
等xnList
(XmlNodeList)的"InnerXml"属性下有< File Id="123" Size="111" Name="abc"/>
而xn
的XmlNode与xnList完全相同,因此不存在xn["File Id"]
这样的东西。
如何从XML文件中获取信息?
目前还不清楚你想做什么,但我建议使用LINQ to XML-它会让事情变得更简单:
var doc = XDocument.Parse(stringXML);
// Or doc.Root.Element("Files").Elements("File")
foreach (var file in doc.Descendants("File"))
{
int id = (int) file.Attribute("Id");
int size = (int) file.Attribute("Size");
string name = (string) file.Attribute("Name");
// Do whatever you need...
}
或者,如果你只是想收集信息:
var doc = XDocument.Parse(stringXML);
var query = doc.Descendants("File").Select(file => new {
Id = (int) file.Attribute("Id"),
Size = (int) file.Attribute("Size"),
Name = (string) file.Attribute("Name")
});
这是正确的方法:
var stringXML = "<Folder><Files><File Id='"123'" Size='"111'" Name='"abc'"/></Files></Folder> ";
XmlDocument xml = new XmlDocument();
xml.LoadXml(stringXML);
XmlNodeList xnList = xml.SelectNodes("/Folder/Files");
foreach (XmlNode xn in xnList)
{
string a = xn["File"].Attributes["Id"].Value;
}
您无法直接获取Id的属性值。您可以使用attribute属性来获取特定属性值。
XmlNodeList xnList = xml.SelectNodes("/Folder/Files");
foreach (XmlNode xn in xnList)
{
string a = xn.Attributes["Id"].Value; // Modify likewise
}