我有一个xml字符串,我正在尝试使用JSON.Net转换为JSON。问题是我只想在我的JSON字符串中使用此xml的某些部分。以下是我使用的代码和我需要的代码。
var x = XDocument.Parse(xmlString);
var json = JsonConvert.SerializeXNode(x);
这将转换整个doc。这就是JSON字符串在JSON Viewer中的样子
我想要的只是桌子(图片1中的箭头)和它的后代在字符串json内。
有可能吗?怎么实现呢?我可以将自定义的ContractResolver与SerializeXnode一起使用吗?
答案 0 :(得分:3)
你有一个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);
这样做:
{{1}}
两种方法都给出相同的结果,表格加上所有后代。