XmlHelper.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using PTMedicalInsurance.Variables;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using System.Threading.Tasks;
  8. using System.Xml;
  9. using System.Xml.Linq;
  10. using System.Xml.XPath;
  11. namespace PTMedicalInsurance.Helper
  12. {
  13. class XmlHelper
  14. {
  15. /// <summary>
  16. /// 组织中心入参
  17. /// </summary>
  18. /// <param name="infno"></param>
  19. /// <param name="input"></param>
  20. /// <returns></returns>
  21. public string setInput(XElement xInput)
  22. {
  23. XDocument XDoc = new XDocument();
  24. XDoc.Add(xInput);
  25. XDoc.Declaration = new XDeclaration("1.0", "GBK", "yes");
  26. return XDoc.ToStringWithDeclaration(); //扩展方法 https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
  27. }
  28. /// <summary>
  29. /// 根据JSonPath查找节点值,如果节点不存在则返回空值
  30. /// </summary>
  31. /// <param name="jo"></param>
  32. /// <param name="jsonPath"></param>
  33. /// <returns></returns>
  34. public string getDestValue(string source, string destPath)
  35. {
  36. try
  37. {
  38. XDocument XDoc = XDocument.Parse(source);
  39. XElement XDest = XDoc.XPathSelectElement(destPath);
  40. if (XDest != null)
  41. return XDest.Value;
  42. else
  43. return "节点为空!";
  44. }
  45. catch (Exception ex)
  46. {
  47. return "查找XML节点异常:" + ex.Message;
  48. }
  49. }
  50. public string ToJSON(string source)
  51. {
  52. string json = "";
  53. try
  54. {
  55. source = Regex.Replace(source, "<row",
  56. "<row xmlns:json=\"http://james.newtonking.com/projects/json\" json:Array=\"true\" ", RegexOptions.IgnoreCase);
  57. XDocument xDoc = XDocument.Parse(source);
  58. json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xDoc.ToXmlDocument());
  59. return json;
  60. }
  61. catch (Exception ex)
  62. {
  63. return "转换异常:" + ex.Message;
  64. }
  65. finally
  66. {
  67. Global.writeLog("XMLToJSON", source,json);
  68. }
  69. }
  70. public string ToXML(string jsonSource)
  71. {
  72. try
  73. {
  74. XmlDocument xe = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(jsonSource);
  75. return xe.OuterXml;
  76. }
  77. catch (Exception ex)
  78. {
  79. return "转换异常:" + ex.Message;
  80. }
  81. }
  82. }
  83. public static class MyExtensions
  84. {
  85. /// <summary>
  86. /// Doc输出无声明,强行补上
  87. /// </summary>
  88. /// <param name="doc"></param>
  89. /// <returns></returns>
  90. public static string ToStringWithDeclaration(this XDocument doc)
  91. {
  92. return doc.Declaration.ToString() + Environment.NewLine + doc.ToString();
  93. }
  94. /// <summary>
  95. /// 无缩进格式(压缩格式)
  96. /// </summary>
  97. /// <param name="doc"></param>
  98. /// <returns></returns>
  99. public static string ToCompressString(this XDocument doc)
  100. {
  101. return doc.Declaration.ToString() + doc.ToString(SaveOptions.DisableFormatting);
  102. }
  103. public static XmlDocument ToXmlDocument(this XDocument xDocument)
  104. {
  105. var xmlDocument = new XmlDocument();
  106. using (var xmlReader = xDocument.CreateReader())
  107. {
  108. xmlDocument.Load(xmlReader);
  109. }
  110. return xmlDocument;
  111. }
  112. public static XDocument ToXDocument(this XmlDocument xmlDocument)
  113. {
  114. using (var nodeReader = new XmlNodeReader(xmlDocument))
  115. {
  116. nodeReader.MoveToContent();
  117. return XDocument.Load(nodeReader);
  118. }
  119. }
  120. }
  121. }