2015-11-26 3 views
0

У меня есть XML-файл, который содержит ...Как получить дочерний элемент внутреннего текста 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> элемент одного или нескольких против каждого <plot> ... Как я могу получить <plot> и <pin>innerText с помощью C# ...

ответ

0

Вы должны использовать ссылку на 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; 
     } 
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); 
     } 
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      
       } 
     } 
}