C# 如何从XML文件中获取相关元素及其子元素?
我必须解析由我们的销售团队生成的XML文件。XML如下所示:C# 如何从XML文件中获取相关元素及其子元素?,c#,xml,C#,Xml,我必须解析由我们的销售团队生成的XML文件。XML如下所示: <?xml version="1.0" encoding="utf-8"?> <ArrayOfOrder> <Order> <Id>1</Id> <OrderGuid /> <BillingAddress> <Id>0</Id> <FirstName>Harvey&
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfOrder>
<Order>
<Id>1</Id>
<OrderGuid />
<BillingAddress>
<Id>0</Id>
<FirstName>Harvey</FirstName>
<LastName>Danger</LastName>
</BillingAddress>
<OrderItems>
<OrderItem>
<ProductName>Silver Widgets</ProductName>
<Price>9.99</Price>
<Quantity>10</Quantity>
<OrderDate>7/2/2014 2:05:00 PM</OrderDate>
<Barcodes>
<BarCode>
<string>123CC2D68</string>
</BarCode>
</Barcodes>
</OrderItem>
</OrderItems>
</Order>
</ArrayOfOrder>
我正在努力完成这样的事情
一,
哈维
危险
那么我如何设置相应Id的名字和姓氏呢 您可以获取帐单地址的XmlNode并使用FirstChild 您还可以选择SingleNode 下面是xPath语法指南
如果您在处理XML方面有一些灵活性,您应该考虑移到<强> LINQ到XML 。从MSDN开始: LINQ to XML是一种最新的、经过重新设计的使用 XML。它提供了的内存中文档修改功能 文档对象模型(DOM),并支持LINQ查询表达式。 尽管这些查询表达式在语法上与 在XPath中,它们提供了类似的功能 还可以查看这两个API之间的一些基本区别 下面是一个完整的工作示例,它演示了LINQ to XML(
System.XML.LINQ
)在您提供的示例数据上的基本用法。在获得LINQ的基本知识之后,您可以做更多的事情。我想你会发现相对容易阅读,也很值得花时间。使用.NET编程时,LINQ本身将显著提高您的生产率
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Xml.Linq;
名称空间LinqToXmlDemo
{
公共课程
{
公共静态void Main(字符串[]args)
{
字符串xmlContent=GetXml();
XElement arrayOfOrder=XElement.Parse(xmlContent);
XElement顺序=ArrayForder.Element(“顺序”);
string orderId=(string)order.Element(“Id”);
XElement billingAddress=order.Element(“billingAddress”);
string firstName=(string)billingAddress.Element(“firstName”);
string lastName=(string)billingAddress.Element(“lastName”);
Console.WriteLine(“[{0}][{1}][{2}]”,
医嘱ID,
名字,
姓氏);
}
私有静态字符串GetXml()
{
返回
@"
1.
0
哈维
危险
银色小部件
9.99
10
2014年7月2日下午2:05:00
123CC2D68
";
}
}
}
这解决了我提出的问题,因此我将问题标记为已回答。实际使用的XML有多个顺序,因此我正在研究如何使用包含的链接循环这些顺序。谢谢一个需要使用乘法器和循环的问题正是LINQ设计要解决的!LINQ通常使从任何类型的集合(或IEnumerable
)中提取所需内容变得更加容易,作为传统for
和foreach
循环的替代方法。(但是,在定义LINQ查询之后,通常会在末尾使用一个非常简单的foreach
循环。)…例如,请查看问题。您可以尝试修改我提供的示例来处理您的数据。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
XmlElement root = xmlDoc.DocumentElement;
XmlNodeList Order = root.SelectNodes("Order");
string id1 = string.Empty;
string firstName = string.Empty;
string lastName = string.Empty;
foreach(XmlNode order in Order)
{
id1 = order["Id"].InnerText;
//firstName = order["BillingAddress/FirstName"].InnerText;
//lastName = order["BillingAddress"].InnerText;
firstName = order["FirstName"].InnerText;
lastName = order["LastName"].InnerText;
Console.WriteLine(id1);
Console.WriteLine("\t" + firstName);
Console.WriteLine("\t" + lastName);
}