2

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

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

这将转换整个文档。这是 json 字符串在 JSON 查看器中的样子 在此处输入图像描述

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

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

4

1 回答 1

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);

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

于 2013-10-08T19:24:22.267 回答