これは意図した通りですが、簡略化してSerializeXmlNode
から出力を減らそうとしています。JsonConvert.SerializeXmlNodeを使用してJSONの標準的なキーと値のペアの属性と値を定義します。
コード:ここで
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.LoadXml(NewXML);
string EventDataJSON = JsonConvert.SerializeXmlNode(XMLDoc, 0, true);
は私のXMLです:
<DataEntries>
<Data Name="Direction">in</Data>
<Data Name="SourceAddress">222.0.0.252</Data>
<Data Name="SourcePort">5355</Data>
<Data Name="DestAddress">192.168.1.24</Data>
</DataEntries>
現在のJSON出力:
{"@Name":"Direction","#text":"in"},
{"@Name":"SourceAddress","#text":"222.0.0.252"},
{"@Name":"SourcePort","#text":"5355"},
{"@Name":"DestAddress","#text":"192.168.1.24"}
理想のJSON出力(インデントは無関係です):
{
"Direction":"in",
"SourceAddress":"222.0.0.252",
"SourcePort":"5355",
"DestAddress":"192.168.1.24"
}
正規表現を使用したくない場合は、私はこの時点で何かを開いています。私の他の選択肢はJavaScriptSerializer
ですが、JSON.netライブラリ内でこれを行う方法があれば、それが望ましいでしょう。