2016-10-03 8 views
1

私のC#アプリケーションを使用すると、属性がaliasのノードに値がtitleまたはkeywordsであるかどうかをチェックするxpathを書く必要があります。文字列値knowledgeは、ノードの値をaliasdescriptionと返します。属性と値の両方の条件を持つノード値を抽出するxpathの書き方

私のサンプルxmlは以下の通りです。私は、これらのラインにしようとしている

<?xml version="1.0" encoding="UTF-8"?> 
<nodes> 
<node> 
    <data alias="title">knowledge is power</data> 
    <data alias="description">required description</data> 
    <data alias="keywords">knowledge, power</data> 
</node> 

<node> 
    <data alias="title">Another title</data> 
    <data alias="description">Lorem ipsum dolor sit amet, consectetur adipiscing elit </data> 
    <data alias="keywords">Lorem, Ipsum</data> 
</node> 
</nodes> 

XMLから値required descriptionが必要になりますが、あなたがまたはの両側に@aliasを指定する必要が

if (xdoc.SelectNodes("nodes/node/data[(@alias='title' or 'keywords')]/[contains(., 'knowledge')]").Count > 0) 
    { 
     // extract the description node value here 
    } 

答えて

0
string[] text = new string[10]; 
if (xDoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords'][contains(text(),'knowledge')]").Count > 0) 
{ 
    var xmlNodes = xDoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords'][contains(text(),'knowledge')]"); 
    int i=-1; 
    foreach (XmlNode item in xmlNodes) 
    { 
     i++; 
     text[i] = item.InnerText.ToString(); 
    } 
} 
1

動作するようには思えません。

if (xdoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords']/[contains(., 'knowledge')]").Count > 0) 
関連する問題