如何解决将xml数据序列化为json时忽略名称空间属性
我正在尝试使用JsonSerializer()
将xml直接序列化为json,但是名称空间属性正在作为最终json中的字段添加。关于如何删除此建议?我尝试使用JsonConvert.Serialize()
,但是序列化的json中缺少一些子节点。
解决方法
解决此问题的方法可能是先将对象反序列化为字典。这样,您可以在转换之间添加一些逻辑。
检查以下示例:
var xml = @"<?xml version='1.0' standalone='no'?>
<root>
<person id='1'>
<name>Alan</name>
<url>http://www.google.com</url>
</person>
<person id='2'>
<name>Louis</name>
<url>http://www.yahoo.com</url>
</person>
</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
var childNodeList = doc.DocumentElement.ChildNodes;
for (int i = 0; i < childNodeList.Count; i++)
{
var nodes = childNodeList.Item(i).ChildNodes;
var dict = new Dictionary<string,object>();
foreach (XmlNode node in nodes)
{
var serializedNode = JsonConvert.SerializeXmlNode(node);
var prop = JsonConvert.DeserializeObject<IDictionary<string,object>>(serializedNode).FirstOrDefault();
dict.Add(prop.Key,prop.Value ?? " ");
}
Console.WriteLine($"item {i}");
Console.WriteLine(string.Join("\r\n",dict.Select(e => $"{e.Key}: {e.Value}")));
}
输出:
//item 0
//name: Alan
//url: http://www.google.com
//item 1
//name: Louis
//url: http://www.yahoo.com
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。