1

如何在我的XML文件中选择特定节点?

在我的第一个中,foreach我选择了标签Property内的所有内容Properties,但我想要一个特定的Property. Property例如,<PropertyCode>等于 123 的A。

XML

<Carga>
    <Properties>
       <Property>
           <PropertyCode>122</PropertyCode>
           <Fotos>
               <Foto>
               </Foto>
           </Fotos>
       </Property>
       <Property>
           <PropertyCode>123</PropertyCode>
           <Fotos>
               <Foto>
               </Foto>
           </Fotos>
       </Property>
     </Properties>
</Carga>

C# 代码

// Here I get all Property tag
// But i want to take just a specific one
foreach (XmlElement property in xmldoc.SelectNodes("/Carga/Properties/Property"))
{
   foreach (XmlElement photo in imovel.SelectNodes("Fotos/Foto"))
   {
       string photoName = photo.ChildNodes.Item(0).InnerText.Trim();
       string url = photo.ChildNodes.Item(1).InnerText.Trim();
       this.DownloadImages(property_id, url, photoName );
   }
}

有人可以帮助我吗?

4

2 回答 2

3

使用Linq 到 Xml

int code = 123;
var xdoc = XDocument.Load(path_to_xml);
var property = xdoc.Descendants("Property")
                   .FirstOrDefault(p => (int)p.Element("PropertyCode") == code);

if (property != null)
{
    var fotos = property.Element("Fotos").Elements().Select(f => (string)f);
}

fotos将是字符串的集合。

于 2013-07-05T14:33:59.047 回答
1

您可以在 XPath 中使用谓词表达式来挑选特定节点.. 像这样:

XmlNodeList nl = xmldoc.SelectNodes("/Carga/Properties/Property[PropertyCode='123']/Fotos/Foto");
foreach(XmlNode n in nl) { ... }

有关 XPath 语法的快速参考,请参见此处:http: //www.w3schools.com/xpath/xpath_syntax.asp

于 2013-07-05T14:35:30.303 回答