[英]Ignore namespace attributes while serializing xml data to json
我正在嘗試使用JsonSerializer()
將 xml 直接序列化為 json,但是命名空間屬性被添加為最終 json 中的字段。關於如何刪除它的任何建議? 我嘗試使用JsonConvert.Serialize()
但序列化的 json 中缺少一些子節點。
解決您的問題的方法可能是先將 object 反序列化為字典。 這樣您就可以在轉換之間添加一些邏輯。
檢查下面的例子:
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}")));
}
Output:
//item 0
//name: Alan
//url: http://www.google.com
//item 1
//name: Louis
//url: http://www.yahoo.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.