gpt4 book ai didi

c#-4.0 - JSON.Net SerializeXnode 排除某些节点

转载 作者:行者123 更新时间:2023-12-04 04:38:45 27 4
gpt4 key购买 nike

我有一个 xml 字符串,我正在尝试使用 JSON.Net 将其转换为 JSON。问题是我只想要这个 xml 的某些部分在我的 JSON 字符串中。下面是我使用的代码和我需要的。

var x = XDocument.Parse(xmlString);
var json = JsonConvert.SerializeXNode(x);

这将转换整个文档。这是 JSON 字符串在 JSON 查看器中的样子
enter image description here

我想要的只是表(图 1 中的箭头)及其后代在字符串 json 中。

有可能吗?如何实现?我可以将自定义 ContractResolver 与 SerializeXnode 一起使用吗?

最佳答案

你有一个 XDocument ,那么为什么不简单地选择您想要的部分,然后只序列化该部分呢?
尝试这样的事情:

var doc = XDocument.Parse(xmlString);
var table = doc.XPathSelectElement("//table[@class=\"form\"]");
var json = JsonConvert.SerializeXNode(table);

请注意 XPathSelectElement是一个扩展方法,所以你需要 using System.Xml.XPath;如果您还没有它,请在代码的顶部。

编辑

你可以不用 XPath像这样:
var doc = XDocument.Parse(xmlString);

var table = root.Descendants(XName.Get("table"))
.Where(e => e.Attributes(XName.Get("class"))
.Select(a => a.Value)
.FirstOrDefault() == "form")
.First();

var json = JsonConvert.SerializeXNode(table);

两种方法都给出相同的结果,表加上所有后代。

关于c#-4.0 - JSON.Net SerializeXnode 排除某些节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19252568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com