首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤XmlNode?

如何过滤XmlNode?
EN

Stack Overflow用户
提问于 2013-11-30 14:05:59
回答 1查看 408关注 0票数 0
代码语言:javascript
复制
<runQueryRecord><id>128</id><caption_id>32</caption_id><featurename>DVC.CANYON-NIGHTFALL</featurename><featureprice>0</featureprice><sorting>0</sorting><partnumber></partnumber><imagepath>assets/images/DVC/NIGHTFALL.jpg</imagepath><selected>0</selected><hidden>0</hidden><optcatalogid>0</optcatalogid><advopt_code></advopt_code><qty>1</qty><featurecost>0</featurecost></runQueryRecord>

代码语言:javascript
复制
XmlNode node = advanceAPI.runQuery("----", "--------",sqlquery);
var sb = new StringBuilder();
            sb.Append("APIResponse(");
            sb.Append(JsonConvert.SerializeObject(node,Newtonsoft.Json.Formatting.Indented));
            sb.Append(");");

代码语言:javascript
复制
node = node.SelectNodes("//runQueryRecord[contains(featurename,'"+ Request.QueryString["strOption"] +"')]");

但这给了我XMLNodeList,这不是正确的格式来将它转换为Newtonsoft.Json的JSON。

请给出一些关于过滤XMLNode节点和获取有条件的匹配节点的想法。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-12-01 01:29:08

首先,如果您只想要一个XmlNode而不是XmlNodeList,那么可以使用SelectSingleNode而不是SelectNodes。这将给出与XPath查询匹配的第一个节点。

其次,如果希望将XML转换为JSON,则需要使用JsonConvert.SerializeXmlNode而不是JsonConvert.SerializeObject

这是一个演示:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        string xml = @"
            <runQueryRecord>
                <id>128</id>
                <caption_id>32</caption_id>
                <featurename>DVC.CANYON-NIGHTFALL</featurename>
                <featureprice>0</featureprice>
                <sorting>0</sorting>
                <partnumber></partnumber>
                <imagepath>assets/images/DVC/NIGHTFALL.jpg</imagepath>
                <selected>0</selected>
                <hidden>0</hidden>
                <optcatalogid>0</optcatalogid>
                <advopt_code></advopt_code>
                <qty>1</qty>
                <featurecost>0</featurecost>
            </runQueryRecord>";

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xml);

        string qsOption = "DVC.CANYON-NIGHTFALL";
        XmlNode node = doc.SelectSingleNode("//runQueryRecord[contains(featurename,'" + qsOption + "')]");
        string json = JsonConvert.SerializeXmlNode(doc, Formatting.Indented);

        Console.WriteLine("APIResponse(" + json + ");");
    }
}

输出:

代码语言:javascript
复制
APIResponse({
  "runQueryRecord": {
    "id": "128",
    "caption_id": "32",
    "featurename": "DVC.CANYON-NIGHTFALL",
    "featureprice": "0",
    "sorting": "0",
    "partnumber": null,
    "imagepath": "assets/images/DVC/NIGHTFALL.jpg",
    "selected": "0",
    "hidden": "0",
    "optcatalogid": "0",
    "advopt_code": null,
    "qty": "1",
    "featurecost": "0"
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20297171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档