2015-06-21 135 views
0

我想要使用属性类获取所有子节点。我的代码是如何使用C#在XML中使用元素属性值获取子节点

string xmlText = File.ReadAllText(@"G:\\car_words_xml.xml"); 
var doc = new XmlDocument(); 
doc.LoadXml(xmlText); 
var result = doc.SelectNodes("//*[@class='سوزوکی']");   
foreach (XmlNode node in result) 
{ 
foreach (XmlNode childNode in node.ChildNodes) 
{ 
textBox1.Text= textBox1.Text+ Environment.NewLine+childNode.InnerText; 
} 
} 

在这段代码中,我给出了class属性的值。如果我想使用变量,而不是值,那么该代码的输出取决于可变值。

回答

0

您可以使用一个字符串变量并连接与XPath表达式变量像下面

string x = ...; // set the value here 
var result = doc.SelectNodes("//*[@class='" + x + "']");   
foreach (XmlNode node in result) 
{ 
    foreach (XmlNode childNode in node.ChildNodes) 
    { 
     textBox1.Text= textBox1.Text+ Environment.NewLine+childNode.InnerText; 
    } 
} 
0

或者,您可以使用String.Format()充塞动态子值到XPath字符串。恕我直言,最好避免诸如缺少单引号之类的问题(单引号直接在双引号之前/之后,很难阅读,而且在缺少时可能不会注意到):

var x = "سوزوکی"; 
var xpath = String.Format("//*[@class='{0}']", x); 
var result = doc.SelectNodes(xpath); 
相关问题