我是一个相对较新的程序员,因此知识有限;但是,有人要求我创建一个程序,将json文件的负载转换为xml文件。它们很多,而且在内容方面都各不相同(而且我不知道它们到底包含什么)。
我尝试了以下代码
static void ProcessFiles(string path)
{
string[] files;
string[] directories;
XmlDocument xml = new XmlDocument();
files = Directory.GetFiles(path);
foreach (string file in files)
{
using (StreamReader r = new StreamReader(file))
{
string j = r.ReadToEnd();
string json = JsonConvert.DeserializeObject(j).ToString();
xml = JsonConvert.DeserializeXmlNode(json);
Console.Write(xml);
}
}
directories = Directory.GetDirectories(path);
foreach(string directory in directories)
{
ProcessFiles(directory);
}
}
我设法将其作为字符串“ json”获取,然后出现错误。
[
{
"Start": "date",
"Finish": "date",
"Subject": "",
"Comments": "",
"Site": "address",
"Location": null,
"Status": false,
"Arrived": true,
"Noshow": false,
"Services": "Initial Consultation",
"Attendees": [
{
"AccountId": 1111,
"AccountType": "MP",
"Name": "MMS (FP), Support "
},
{
"AccountId": 2220915,
"AccountType": "PA",
"Name": "Test, Patient "
}
]
},
]
我一直在网上寻找解决方案,但到目前为止没有运气。有人可以帮忙吗?
答案 0 :(得分:1)
您已接近目标,
所以现在您的操作就像
StreamReader
从ReadToEnd
读取字符串json dynamic
变量。但是在第3点,您尝试将json
字符串传递给LoadXml
方法,其中LoadXml
希望将xml字符串作为输入。
到目前为止,newtonsoft有一种方法可以直接将json转换为xml
XmlDocument xdoc = JsonConvert.DeserializeXmlNode(json);
所以现在您的代码看起来像
//Your code as it is
using (StreamReader r = new StreamReader(file))
{
string json = r.ReadToEnd();
xdoc = JsonConvert.DeserializeXmlNode(json);
xdoc.Save(file + ".xml");
}
//Your code as it is
答案 1 :(得分:0)
在我看来,您只需要这个:
static void ProcessFiles(string path)
{
foreach (string file in Directory.GetFiles(path))
{
JsonConvert.DeserializeXmlNode(File.ReadAllText(file)).Save(file + ".xml");
}
foreach (string directory in Directory.GetDirectories(path))
{
ProcessFiles(directory);
}
}