生成 XML 文件時出錯。使用 XmlInclude 或 SoapInclude 特性靜態指定非已知的型別。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Serialization; namespace ConsoleApp6 { class Program { static void Main(string[] args) { string r = string.Empty; List<Base> list = new List<Base>() { new A() { Name = "initName", AName = "aa" }, new B() { Name = "initName", BName = "bb" } }; try { r = XmlHelper.SerializeToXml(list); } catch (Exception ex) { /* 生成 XML 文件時出錯。 */ Console.WriteLine(ex.Message); /* 不應是型別 ConsoleApp6.A。使用 XmlInclude 或 SoapInclude 特性靜態指定非已知的型別。 */ Console.WriteLine(ex.InnerException.Message); } Console.WriteLine(r); Console.Read(); } } #region [ Test Class ] //處理方法:在基類上加上所有需要序列化的子類的 XmlInclude 特性就可以了。 //下面的程式碼去掉註釋,即可正常執行 /* [XmlInclude(typeof(A))] [XmlInclude(typeof(B))] */ public class Base { public string Name { get; set; } } public class A : Base { public string AName { get; set; } } public class B : Base { public string BName { get; set; } } #endregion #region [ XMLHelper ] public static class XmlHelper { public static void ObjectWriteToXmlFile<T>(T myObject, string filePath) { string xmlString = SerializeToXml<T>(myObject); File.WriteAllText(filePath, xmlString); } public static T XmlFileToObject<T>(string filePath) { string xmlString = File.ReadAllText(filePath); return DeserializeToObject<T>(xmlString); } /// <summary> /// 將自定義物件序列化為XML字串 /// </summary> /// <param name="myObject">自定義物件實體</param> /// <returns>序列化後的XML字串</returns> public static string SerializeToXml<T>(T myObject) { if (myObject != null) { XmlSerializer xs = new XmlSerializer(typeof(T)); MemoryStream stream = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8); writer.Formatting = Formatting.None;//縮排 xs.Serialize(writer, myObject); stream.Position = 0; StringBuilder sb = new StringBuilder(); using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { string line; while ((line = reader.ReadLine()) != null) { sb.Append(line); } reader.Close(); } writer.Close(); return sb.ToString(); } return string.Empty; } /// <summary> /// 將XML字串反序列化為物件 /// </summary> /// <typeparam name="T">物件型別</typeparam> /// <param name="xml">XML字元</param> /// <returns></returns> public static T DeserializeToObject<T>(string xml) { T myObject; XmlSerializer serializer = new XmlSerializer(typeof(T)); StringReader reader = new StringReader(xml); myObject = (T)serializer.Deserialize(reader); reader.Close(); return myObject; } } #endregion }
相關推薦
生成 XML 文件時出錯。使用 XmlInclude 或 SoapInclude 特性靜態指定非已知的型別。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using
WebService生成XML文件時出錯。不應是型別XXXX。使用XmlInclude或SoapInclude屬性靜態指定非已知的型別。
情況是這樣的有自定義的3個類,House、SaleHouse、RentHouse。SaleHouse和RentHouse是House類的子類。在WebService中有一個方法是返回House類。 1 [WebMethod]2 public House Get(in
WebService生成XML文檔時出錯。不應是類型XXXX。使用XmlInclude或SoapInclude屬性靜態指定非已知的類型。
ces 錯誤 ali lse pub col ebs single .get 情況是SingleRoom和DoubleRoom是Room類的子類。在WebService中有一個方法是返回Room類。 public Room Get(int roomId) { re
對訊息 的正文進行序列化時出錯:“生成 XML 文件時出錯。”
c# 執行儲存過程時報錯:對訊息 的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable();
對訊息 的正文進行序列化時出錯:“生成 XML 文件時出錯。”
c# 執行儲存過程時報錯:對訊息 的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable()
WebService 在傳回 ArrayList 時說: XML 文件時出錯
System.InvalidOperationException: 生成 XML 文件時出錯。 ---> System.InvalidOperationException: CProxyTypeSpace_EntityRoleEntity_NHibernate_Prox
webservice 傳輸Xml文件時的XmlDocument會被直接轉化成XmlNode 想要把它轉回到XmlDocument採用如下變紅的方法。
[WebMethod] public XmlDocument GetXmlDocument() { // Create an XmlDocument object. XmlDocument xmlDocumentObject = new XmlDocument(); XmlDocumentObject.Lo
java 生成 xml 文件
new output org enc class 註意 created ear str 解析會了,那接著來學學生成~ 同樣的引入依賴: import java.io.File; import java.io.FileOutputStream; import or
使用多個項目生成Xml文件來顯示幫助文檔
spa 的人 ber this blog -i 項目 對比 方便 終於到這了,我們首先將Product單獨作為一個項目 WebAPI2PostMan.WebModel 並引用他,查看文檔如下。 你會發現,你的註釋也就是屬性的描述沒有了。打開App_Data/XmlDocu
android 中生成xml文件
android 寫xml文件 在Android中生成xml文件真的很簡單,下面提供2中方法,一種是通過String寫入到文件,另外一種是通過XML 的 XmlSerializer.以後遇到Android寫xml內容就不會困惑了1、通過string寫入文件 String name=mEtName.
Mybatis自動生成Xml文件,針對字段類型為text等會默認產生XXXXWithBlobs的方法問題
div 生成xml文件 處理 pre cnblogs href 字段 默認 mybatis 默認情況下產生的Mapper.xml裏面存在: 需要修改generatorConfiguration.xml,裏面的table加屬性,如: <t
省廳報件7.0 讀取mdb 生成xml 文件
tel long {0} datetime fda string console .get exceptio using System;using System.Collections.Generic;using System.Data;using System.Data.
SQL server 導出平面文件時出錯: The code page on Destination - 3_txt.Inputs[Flat File Destination Input].Columns[UserId] is 936 and is required to be 1252.
log 解決辦法 驗證 AI inpu image ans post BE 我在導出平面文件時:Error 0xc00470d4: Data Flow Task 1: The code page on Destination - 3_txt.Inputs[Flat File
eclipse中如何設置在新建JSP/XML文件時就指定編碼UTF-8?
cli Language family ref 發現 encoding 需要 unicode tty eclipse新建jsp文件默認字符編碼為ISO-8859-1,很煩人,每次都需要更改 <%@ page language="java" contentType=
安卓使用StringBuffer和FileOutputStream生成xml文件
該程式是在安卓中點選生成xml按鈕,在sdcard生成一個名為smsbackup的xml文件 佈局就不多說了,先在存放java的資料夾中新建一個Sms類用來宣告變數 Sms程式碼如下: package com.example.createxmlv1; public class Sm
dom4j生成xml文件
format doc bsp xml文件 out ted 通過 package orm 1 package xml; 2 3 import java.io.FileWriter; 4 import java.io.IOException; 5 import ja
Dom4j解析和生成XML文件
一、前言 dom4j是一套非常優秀的java開源api,主要用於讀寫xml文件,具有效能優異、功能強大、和非常方便使用的特點。 另外xml經常用於資料交換的載體,像呼叫webservice傳遞的引數,以及資料做同步操作等等, 所以使用dom4
Xml—dom4j解析以及寫入xml文件時的亂碼問題
book.xml <?xml version="1.0" encoding="UTF-8"?> <書架> <書> <書名>Java就業基礎教程</書名> <作者>張孝祥</作者
Java解析XML與生成XML文件
mysq for 二進制 根據 port des void pub pack XML是eXtensible Markup Language(可擴展標記語言)的簡寫形式,它是一種元標記語言(meta-markup language),也就是說它沒有一套能夠適用於各個領域中所
根據xsd生成xml文件的c#實現(轉)
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;us