Visual Studio 2015(C#,WinForms)
我似乎无法在任何地方找到关于如何从奇数标签中提取数据的合适教程或示例。他们中的大多数只有简单标签之间的值。有一个简单的方法吗?
XML文件的设置如下:
<root>
<object type="Item">
<field name="id">12345</field>
<field name="name">Item Name</field>
<field name="description">Item Description</field>
<field name="Image">
<object type="Graphic">
<field name="format">PNG</field>
<field name="width">100</field>
<field name="height">200</field>
</object>
</field>
</object>
</root>
如何弹出每个节点的值并将它们放入每个节点的文本框中?
答案 0 :(得分:1)
您可以使用XPathNavigator执行此操作。 将xml加载到XmlDocument a然后创建XPathNavigator以获取值
var xDoc = new XmlDocument();
xDoc.Load("XMLFile1.xml");
var nav = xDoc.CreateNavigator();
//Goes to root
nav.MoveToFirstChild();
//Goes to first elements
nav.MoveToFirstChild();
//Goes to first elements in node - can be recursive
nav.MoveToFirstChild();
do
{
//For inner object better in recursive function if(nav.HasChildren) nav.MoveToFirstChild()
//Be carefull to check if children is only the text of element
var name = nav.GetAttribute("name","");
var val = nav.Value;
} while (nav.MoveToNext());
答案 1 :(得分:0)
您可以使用.NET的XmlReader
包
System.Xml
对象
所以你可以做点什么
string xmlString = File.ReadAllText(C:\Some\Directory\File.xml);
XmlReader rdr = XmlReader.Create(new StringReader(xmlString));
reader.ReadToFollowing("field");
然后只需比较属性并将每个属性的值放在变量或数组中,具体取决于您将如何实现XmlReader
您可以从here
了解更多信息答案 2 :(得分:0)
抱歉,我以前的帖子不准确&amp;没有必要这么复杂。
这是更简单的XLINQ版本:
void Main()
{
var xml = @"<root>
<object type=""Item"">
<field name=""id"">12345</field>
<field name=""name"">Item Name</field>
<field name=""description"">Item Description</field>
<field name=""Image"">
<object type=""Graphic"">
<field name=""format"">PNG</field>
<field name=""width"">100</field>
<field name=""height"">200</field>
</object>
</field>
</object>
</root>";
var rdr = new StringReader(xml);
var elem = XElement.Load(rdr);
var result = elem.Descendants("field").Select(e =>
new Tuple<string, string>(e.Attribute("name").Value, e.Value)).ToList();
}
结果: