【发布时间】:2023-03-24 00:00:01
【问题描述】:
我在 C# 中有以下 XML,如下所示:
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<!--PowerStats Table Model Paramter Template Ver 1.0 Created on 11/19/2013-->" +
"<paramFile version=\"1.0\" createdBy=\"PowerStats v1.0\">" +
" <DSNumber value=\"82\" />" +
"</parmFile>" +
"<paramFile version=\"2.0\" createdBy=\"PowerStats v2.0\">" +
" <DSNumber value=\"83\" />" +
"</parmFile>";
然后我创建 JSON 来测试(哪个)工作正常:
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc).Replace("\"@", "\"");
但是使用 JToken 我如何获得第一个 paramFile 版本和第二个带有以下代码的版本?我一直为空。
JToken token = JObject.Parse(jsonText);
string paramFile = (string)token.SelectToken("paramFile[0].version");
Response.Write(paramFile);
【问题讨论】:
-
我很惊讶它没有引发异常,因为您在 XML 中没有单个根元素。您是否尝试打印
jsonText以查看其结构? -
你是对的。如果周围有 2 个带有根的 paramFiles,则该代码有效。我需要弄清楚有多少 paramFiles 可以执行 root.paramFile.version 或 root.paramFile[0].version
-
您使用 Json.NET 解析 XML 有什么原因吗?为什么不能直接从 XML DOM 获取数据?
-
我正在根据架构师对我们应用程序的请求将我们所有的 XML 转换为 JSON
-
所以最终根本不会有 XML
标签: c# .net json linq json.net