【问题标题】:Retrieve XML column from DataBase with lines C#使用 C# 行从数据库中检索 XML 列
【发布时间】:2021-09-01 23:35:37
【问题描述】:

我对 DB 运行查询,它返回 1 行 2 列。每列都有 XML(脚本),我需要在其中检索到(理想情况下是字符串),然后对 DB 执行。 我需要检索到的字符串具有行和格式,就像我从 SQL 管理工作室复制一样。

来自 SQL 管理工作室的部分 XMLresult 我需要这种格式。替换:XXXXXX

<message>
  <header>
    <meta version="02" type="OrMessageUdalost_Int" />
    <sender name="XXXXXX" appid="XXXXXX" netid="XXXXXX" />
    <receiver name="XXXXXX" appid="XXXXXX" netid="XXXXXX" />
    <timestamp date="XXXXXX" time="10:11:00" gmt="+XXXXXX" />
    <options priority="4" props="XXXXXX" limit="100" />
  </header>
  <content>
    <q1:orMessageUdalost_Int xmlns:q1="XXXXXX" verze="v_2.11">
      <hlavicka>
        <idDatovaVeta>XXXXXX</idDatovaVeta>
        <datumVytvoreni>XXXXXX</datumVytvoreni>
        <ciselnikAktualizace>false</ciselnikAktualizace>
        <ostrovniRezim>false</ostrovniRezim>
        <puvodceDV>
          <id>XXXXXX</id>
          <kod>XXXXXX</kod>
        </puvodceDV>
        <idPuvodniDV>XXXXXX</idPuvodniDV>
        <puvodniDatumVytvoreni>XXXXXX</puvodniDatumVytvoreni>
        <stavUdalosti>XXXXXX</stavUdalosti>
        <stavSlozky>
          <slozka>
            <id>XXXXXX</id>
            <kod>XXXXXX</kod>
          </slozka>
          <isStav>XXXXXX</isStav>
        </stavSlozky>
      </hlavicka>
      <teloFull>

感谢您的建议。

【问题讨论】:

    标签: c# sql xml database


    【解决方案1】:

    所以关键是要获得正确的缩进?

    在这种情况下,我建议您查看以下 SO 线程:

    Format XML string to print friendly XML string

    关键是你需要缩进,可以通过XmlTextWrite.Formatting = Formatting.Indented选项来实现。

    【讨论】:

      【解决方案2】:

      使用 XML 序列化程序。见下面的代码

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Xml;
      using System.Xml.Serialization;
      using System.IO;
      
      namespace ConsoleApplication193
      {
          class Program
          {
              const string INPUT_FILENAME = @"c:\temp\test.xml";
              const string OUTPUT_FILENAME = @"c:\temp\test1.xml";
              static void Main(string[] args)
              {
                  string xml = File.ReadAllText(INPUT_FILENAME);
                  StringReader sReader = new StringReader(xml);
      
                  XmlReader reader = XmlReader.Create(sReader);
                  XmlSerializer serializer = new XmlSerializer(typeof(Message));
                  Message message = (Message)serializer.Deserialize(reader);
      
                  //write
                  XmlSerializerNamespaces names = new XmlSerializerNamespaces();
                  names.Add("q1", "XXXXXX");
      
                  XmlWriterSettings settings = new XmlWriterSettings();
                  settings.Indent = true;
                  MemoryStream stream = new MemoryStream();
                  XmlWriter writer = XmlWriter.Create(stream);
                  serializer.Serialize(writer,message,names);
                  byte[] buffer = new byte[stream.Length];
                  stream.Position = 0;
                  stream.Read(buffer, 0, (int)stream.Length);
                  string output = Encoding.UTF8.GetString(buffer);
                
              }
          }
          [XmlRoot("message")]
          public class Message
          {
              public Header header { get; set; }
              public Content content { get; set; }
          }
          public class Header
          {
              public Meta meta { get; set; }
              public Sender sender { get; set; }
              public Receiver receiver { get; set; }
              public Timestamp timestamp { get; set; }
              public Options options { get; set; }
          }
          public class Meta
          {
              [XmlAttribute("version")]
              public string version { get; set; }
              [XmlAttribute("type")]
              public string type { get; set; }
          }
          public class Sender
          {
              [XmlAttribute()]
              public string name { get; set; }
              [XmlAttribute()]
              public string appid { get; set; }
              [XmlAttribute()]
              public string netid { get; set; }
          }
          public class Receiver
          {
              [XmlAttribute()]
              public string name { get; set; }
              [XmlAttribute()]
              public string appid { get; set; }
              [XmlAttribute()]
              public string netid { get; set; }
          }
          public class Timestamp
          {
              [XmlAttribute()]
              public string date { get; set; }
              [XmlAttribute()]
              public DateTime  timespan { get; set; }
              [XmlAttribute()]
              public string gmt { get; set; }
          }
          public class Options
          {
              [XmlAttribute()]
              public int priority { get; set; }
              [XmlAttribute()]
              public string props { get; set; }
              [XmlAttribute()]
              public int limit { get; set; }
          }
          public class Content
          {
              [XmlElement(Namespace = "XXXXXX")]
              public OrMessageUdalost_Int orMessageUdalost_Int { get; set; }
          }
         public class OrMessageUdalost_Int
          {
              [XmlAttribute()]
              public string verze { get; set; }
              [XmlElement(Namespace = "")]
              public Hlavicka hlavicka { get; set; }
          }
          public class Hlavicka
          {
              public string idDatovaVeta { get; set; }
              public string datumVytvoreni { get; set; }
              public string ciselnikAktualizace { get; set; }
              public Boolean  ostrovniRezim { get; set; }
              public PuvodceDV puvodceDV { get; set; }
              public string idPuvodniDV { get; set; }
              public string puvodniDatumVytvoreni { get; set; }
              public string stavUdalosti { get; set; }
              [XmlArray("stavSlozky")]
              [XmlArrayItem("slozka")]
              public List<Slozka> slozka { get; set; }
      
              public TeloFull teloFull { get; set; }
          }
          public class PuvodceDV
          {
              public string id { get; set; }
              public string kod { get; set; }
          }
          public class Slozka
          {
              public string id { get; set; }
              public string kod { get; set; }
          }
          public class TeloFull
          {
          }
        
      }
      

      【讨论】:

        猜你喜欢
        • 2016-01-29
        • 1970-01-01
        • 2013-08-03
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多