Xml解析器获取值 [英] Xml parser get value

查看:78
本文介绍了Xml解析器获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的示例XML:



I have sample XML like this :

<?xml version="1.0"?>
<methodResponse>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <string>PLNPASC</string>
                        </value>
                        <value>
                            <string>20160907222141</string>
                        </value>
                        <value>
                            <string>538731734541</string>
                        </value>
                        <value>
                            <string></string>
                        </value>
                        <value>
                            <string></string>
                        </value>
                        <value>
                            <string>887849</string>
                        </value>
                        <value>
                            <string>12000</string>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodResponse>









我希望在没有xml dataReader的数据数组中获得null值的值



希望你帮助



我尝试了什么:



我尝试了一些方法,但没有结果....





and i want get value with null value in data array without xml dataReader

Hope you help

What I have tried:

I try some method but no result....

推荐答案

不确定为什么你不想使用xml数据读取器所以我正在使用XDocument和linq到xml。



此代码将显示所有值为空的元素的XML元素。



Not sure why you don't want to use xml data reader so i'm using XDocument and linq to xml.

This code will show all value XML elements where the thing is null or empty.

var myxml = @"<?xml version='1.0'?>
<methodResponse>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <string>PLNPASC</string>
                        </value>
                        <value>
                            <string>20160907222141</string>
                        </value>
                        <value>
                            <string>538731734541</string>
                        </value>
                        <value>
                            <string></string>
                        </value>
                        <value>
                            <string></string>
                        </value>
                        <value>
                            <string>887849</string>
                        </value>
                        <value>
                            <string>12000</string>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodResponse>";

            XDocument xdoc = XDocument.Parse(myxml);


            var elements = xdoc.Descendants(XName.Get("value"));

            foreach (XElement el in elements.Where(m => string.IsNullOrEmpty(m.Value)))
            {
                Console.WriteLine("el.Name: " + el.Name);
                Console.WriteLine("el.Value" + el.Value);
            }


请阅读我对这个问题的评论...



如果您想从中获取数据路径: methodResponse-> params-&g t; param-> value-> array-> data-> value-> string ,你可以使用 Linq To Xml [ ^ ]:



Please, read my comment to the question...

If you would like to get data from that path: methodResponse->params->param->value->array->data->value->string, you can use Linq To Xml[^] with that query:

var result = xdoc.Descendants("string").Where(m =(string)m.Value==string.Empty);



以上查询返回:


Above query returns:

<string></string>
<string></string>







var result = xdoc.Descendants("string").Where(m =(string)m.Value!=string.Empty);



结果:


Result:

<string>PLNPASC</string>
<string>20160907222141</string>
<string>538731734541</string>
<string>887849</string>
<string>12000</string>


这篇关于Xml解析器获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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