我正在制作一个小工具,用于检查XML文件中的材料编号。
我知道这对你们的专家来说非常容易,我想请你帮忙解决这个问题。在我的机器上,我想有.NET 2.0框架,并安装了VS C#Express 2005。
我有一个包含材料数据的XML。它位于我当地的车道。我现在能够浏览XML文件并将文件保存在字符串变量中。嗯,这就是我到目前为止所做的......
if(folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "Product.xml");
string prodFile = files[0];
...
...
假设这是XML的结构:
<Record>
<Product>
<Material_Number>20209485</Material_Number>
<Product_Type>Type1</Product_Type>
...
...
</Product>
</Record>
如何获取物料编号值?
答案 0 :(得分:3)
您可以使用XmlDocument
类将XML文件加载到DOM中。
MSDN - 此类实现W3C文档对象模型(DOM)1级核心和核心DOM级别2. DOM是XML文档的内存(缓存)树表示,启用此文档的导航和编辑。因为XmlDocument实现了IXPathNavigable接口,所以它也可以用作XslTransform类的源文档。
有很多方法可以读取你的价值。 我真的鼓励您阅读Working with Xml DOM
XmlNodeList list = xml.GetElementsByTagName("Product");
XmlAttributeCollection attr = list[0].Attributes;
string materialNumber = list[0].ChildNodes[0].InnerText;
或
XmlNodeList list = xml.GetElementsByTagName("Material_Number");
string materialNumber = list[0].InnerText;
答案 1 :(得分:1)
您还可以将XPathNavigator
和XPathExpression
与XmlDocument
一起使用。
var xmlDoc = new XmlDocument();
xmlDoc.Load("Product.xml") //or xmlDoc.LoadXml(xmlString);
var xmlNav = xmlDoc.CreateNavigator();
string materialNum;
var iterator = xmlNav.Select("/Record/Product/Material_Number");
if (iterator.MoveNext() && iterator.Current != null)
materialNum = iterator.Current.Value;
如果您使用.Net 3.0+,则可以使用System.Xml.Linq.XDocument
。
var xdoc = XDocument.Load("Product.xml"); //or var xdoc = XDocument.Parse(xmlString);
var materialNum = xdoc.Root.Element("Product").Element("Material_Number").Value;
答案 2 :(得分:0)
我能够找到解决方案。虽然不那么优雅......
XmlDocument xmlDoc= new XmlDocument();
xmlDoc.Load(@"C:\Product.xml");
XmlNodeList a = xmlDoc.GetElementsByTagName("Material_Number");
string materialNumber = a[0].InnerText;