在XML中查找特定单词 [英] Find Specific Word in XML

查看:70
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆