在XML中查找特定单词 [英] Find Specific Word in XML
问题描述
我有一个XML文件::
I have one XML file::
<details>
<data>
<find>TAG11</find>
<data_type>Static Data</data_type>
<static_value>Varun</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>VAL1</find>
<data_type>Dynamic Data</data_type>
<static_value>Not Applicable</static_value>
<field_name>Product Name</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>TAG1</find>
<data_type>Dynamic Data</data_type>
<static_value>Not Applicable</static_value>
<field_name>Country Name</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>VAL11</find>
<data_type>Static Data</data_type>
<static_value>Nayak</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>VAL2</find>
<data_type>Dynamic Data</data_type>
<static_value>Not Applicable</static_value>
<field_name>Batch Code</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>TAG12</find>
<data_type>Dynamic Data</data_type>
<static_value>Not Applicable</static_value>
<field_name>Carton Number</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>VAL3</find>
<data_type>Dynamic Data</data_type>
<static_value>Not Applicable</static_value>
<field_name>Product Strength</field_name>
<table_name>Batch_Master</table_name>
</data>
<data>
<find>TAG10</find>
<data_type>Not Selected</data_type>
<static_value>Not Applicable</static_value>
<field_name>Not Selected</field_name>
<table_name>Batch_Master</table_name>
</data>
</details>
现在我只需要在 data_type 是静态数据时将 find和static_value 值存储在字符串中,
我对XMLtoLinq不太了解bt我写这个函数
Now I need to store find, and static_value values in string only when data_type is Static Data,
I dont have much idea about XMLtoLinq bt I write this function
var xmlStr = File.ReadAllText(@"D:\Test\DATA020913.xml");
var str = XElement.Parse(xmlStr);
var result = str.Elements("DATA").
Where(x => x.Element("Data_Type").Value.Equals("Static Data")).ToList();
MessageBox.Show(result.ToString());
Console.WriteLine(result);
由此我得到的只有静态数据的次数,
bt我还想要中的值和变量中的static_value 值
FYI ::稍后我将在我的文本文件中替换这个varibles值。
请帮助我... !!
by this I getting Only Number Of times static data comes,
bt i also want values in of find, and static_value values in variable
FYI:: later on I will replace this varibles values in my text file.
kindly help me for this..!!
推荐答案
Hello Varun,
您可以获取查找和 static_value的列表使用此查询。
尝试一次 -
Hello Varun,
You can get the list of find, and static_value by using this query.
Try this once -
var find_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Element("find"));
var static_value_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Element("static_value"));
这意味着你必须在这里保留两个清单。
如果你想要数据标签中的所有值那么
It means you have to maintain two list here.
If you want the all values from data tag then
var find_result = str.Elements("data").Where(s => s.Element("data_type").Value.Equals("Static Data")).Select(s => s.Elements());
有时我更喜欢使用XPath而不是Linq。在这种情况下,XPath过滤器details / data [data_type ='Static Data']
将为您提供此结果:
Sometimes I prefer using XPath instead of Linq. In this case the XPath filter "details/data[data_type='Static Data']
" will give you this result:
<data>
<find>TAG11</find>
<data_type>Static Data</data_type>
<static_value>Varun</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>
-----------------------
<data>
<find>VAL11</find>
<data_type>Static Data</data_type>
<static_value>Nayak</static_value>
<field_name>Not Applicable</field_name>
<table_name>Batch_Master</table_name>
</data>
您可以创建一个<$ c $的实例c> XmlDocument ,加载Xml源并使用方法 SelectNodes()
,使用XPath语句< code>详细信息/数据[data_type ='静态数据']
。
对于测试XPath语句,您可以在此处使用此工具: http://www.online-toolz.com/tools/xpath-editor.php [ ^ ]。此处的信息如下: http://stackoverflow.com/questions/ 9683054 / xpath-to-select-element-on-childs-child-value [ ^ ]也很有帮助。
You can create one instance of XmlDocument
, load the Xml source and use the method SelectNodes()
with the XPath statement "<code>details/data[data_type='Static Data']
".
For testing XPath statements you may use this tool here: http://www.online-toolz.com/tools/xpath-editor.php[^]. This information here: http://stackoverflow.com/questions/9683054/xpath-to-select-element-based-on-childs-child-value[^] can also be helpful.
这篇关于在XML中查找特定单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!