Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于两个子节点值从XML文件获取值_C#_Xml_Visual Studio 2008_Xpath - Fatal编程技术网

C# 基于两个子节点值从XML文件获取值

C# 基于两个子节点值从XML文件获取值,c#,xml,visual-studio-2008,xpath,C#,Xml,Visual Studio 2008,Xpath,我有一个xml文档,需要XPath表达式根据两个子节点值选择节点值。 XML文件结构为: <catalog> <book id="123"> <title>Book123</title> <author>Author123</author> <genre>Genre123</genre> </book> . . . </catalog> 有人在这方面帮助我吗?试试看 //b

我有一个xml文档,需要XPath表达式根据两个子节点值选择节点值。 XML文件结构为:

<catalog>
<book id="123"> 
<title>Book123</title>
<author>Author123</author>
<genre>Genre123</genre>
</book>
.
.
.
</catalog>
有人在这方面帮助我吗?

试试看

//book[title='Book123' and author='Author123']
作为您的XPath。可能值得检查一下您是否使用.Trim()修剪了输入上的空格,例如

你可以用

//book[title[text()='Book123'] and author[text()='Author123']]

调试时,生成的表达式是否符合预期?是否必须在此处使用XPath?您可以使用LINQ转换为XML吗?这将非常简单,并且可以避免你需要担心那些名字中有引号的作者。@AustinSalonen:我需要得到那本书的价值观,它的书名和作者在表达式中被提及。实际上,我使用了由根节点调用的SelectNodes()方法。在我的例子中,根节点是catalog。所以,我需要根据它的子节点值来提取节点。@JonSkeet:这里XPath是必须的。你能帮我通过XPath得到这个吗?@Itz.Irshad:恐怕不行。我对XPath的了解还不够透彻,不必担心作者的名字“O'Brian”等,就可以建议正确的方法来包含任意值。希望真正的XPath专家很快就会出现……正如您所建议的,我使用了它。没有例外,但这里显示的消息是:枚举不会产生任何结果。我在这里尝试了XML/XPath组合:它突出显示了正确的元素。也许XML中存在大小写问题或输入错误?谢谢,亲爱的,你做得很好。
TextBox1.Text.Trim()
//book[title[text()='Book123'] and author[text()='Author123']]