C# 如何获取xml的子元素内部文本?
我有一个xml文件,其中包含C# 如何获取xml的子元素内部文本?,c#,xml,C#,Xml,我有一个xml文件,其中包含 <Addresses> <Address> <Plot>79/435</Plot> <Pin> <Pin>4</Pin> </Pin> </Address> <Address> <Plot>79/438</Plot>
<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中,每个都有唯一的innerText,但元素值是单个或多个…如何使用c获取和innerText…我建议您使用XmlSerializer和XmlDeserializer,这样您的xml将转换为类对象,然后您可以使用LINQ 示例:
您应该使用指向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;
}
用这个
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
foreach (XmlElement node in doc.GetElementsByTagName("Pin"))
{
if( node.FirstChild.NodeType == XmlNodeType.Text)
Console.WriteLine(node.InnerText);
}
经过多次尝试,我找到了自己的解决方案
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
}
}
}