我有一个包含...的xml文件。
<Addresses>
<Address>
<Plot>79/435</Plot>
<Pin>
<Pin>4</Pin>
</Pin>
</Address>
<Address>
<Plot>79/438</Plot>
<Pin>
<Pin>6</Pin>
</Pin>
<pin>
<pin>19</pin>
</pin>
</Address>
<Address>
<Plot>79/439</Plot>
<Pin>
<Pin>9</Pin>
</Pin>
<Pin>
<Pin>10</Pin>
</Pin>
</Address>
</Addresses>
在此xml中,每个<plot>
都有唯一的innerText
,但每个<pin>
的{{1}}元素值是单个或多个...我如何获得{{1}使用c#...
<plot>
<plot>
答案 0 :(得分:0)
我建议你使用XmlSerializer
&amp; XmlDeserializer
以便您的xml将转换为类对象,然后您可以使用LINQ
示例:
答案 1 :(得分:0)
您应该使用Link to XML来实现此目的。这很简单,请参阅以下MSDN文档。
您的代码应如下所示。
XElement root = XElement.Load("YourXML.xml");
var Plots =
from el in root.Elements("Address")
select new { Plot = el.Element("Plot").Value, Pins = el.Elements("Pin").Select( p => p.Element("Pin").Value ).ToList() };
foreach (var p in Plots)
{
string tmpPolt = p.Plot;
List<string> tmpPins = p.Pins;
}
答案 2 :(得分:0)
用这个吗?
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
foreach (XmlElement node in doc.GetElementsByTagName("Pin"))
{
if( node.FirstChild.NodeType == XmlNodeType.Text)
Console.WriteLine(node.InnerText);
}
答案 3 :(得分:0)
经过多次尝试,我找到了自己的解决方案......
XmlDocument load = new XmlDocument();
load.LoadXml(xmlString);
XmlNode xNodeAddresses = load.DocumentElement.SelectSingleNode("//Addresses");
for (int i = 0; i < xNodeAddresses.ChildNodes.Count; i++)
{
XmlNode xnodeAddress = xNodeAddresses.ChildNodes[i];
string plot= xnodeAddress.FirstChild.InnerText;
//do stuff with plot
for (int j = 0; j < xnodeAddress.ChildNodes.Count; j++)
{
if (j>0)
{
string pin = xnodeHolding.ChildNodes[j].FirstChild.InnerText;
//do stuff with pin
}
}
}