- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想通过数据创建 XML,并且我在 DataSet
中收到了来自数据库的数据。或 IList<Booking>
.现在我正在使用 DataSet
通过此代码创建 XML。
string result = String.Empty;
using (StringWriter sw = new StringWriter())
{
ds.WriteXml(sw);
result = sw.ToString();
}
我的 XML 就是这种形式。
<Booking>
<ID>32</ID>
<BookingNumber>12120001</BLNumber>
<ReferenceNo>ABCED11212280007</ReferenceNo>
<Name>Customer Name1</Name>
<Address>Customer Address</Address>
</Booking>
<Booking>
<ID>33</ID>
<BookingNumber>12120002</BLNumber>
<ReferenceNo>ABCED11212280008</ReferenceNo>
<Name>Customer Name2</Name>
<Address>Customer Address2</Address>
</Booking>
<BookingDetail>
<ID>206</ID>
<BookingID>32</BookingID>
<OrderItem>Item1</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>207</ID>
<BookingID>32</BookingID>
<OrderItem>Item2</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>208</ID>
<BookingID>33</BookingID>
<OrderItem>Item1</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>209</ID>
<BookingID>33</BookingID>
<OrderItem>Item2</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>210</ID>
<BookingID>33</BookingID>
<OrderItem>Item3</OrderItem>
</BookingDetail>
但我想要这种形式的 XML。
<CompleteBooking>
<Booking>
<ID>32</ID>
<BookingNumber>12120001</BLNumber>
<ReferenceNo>ABCED11212280007</ReferenceNo>
<Name>Customer Name1</Name>
<Address>Customer Address</Address>
</Booking>
<BookingDetail>
<ID>206</ID>
<BookingID>32</BookingID>
<OrderItem>Item1</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>207</ID>
<BookingID>32</BookingID>
<OrderItem>Item2</OrderItem>
</BookingDetail>
</CompleteBooking>
<CompleteBooking>
<Booking>
<ID>33</ID>
<BookingNumber>12120002</BLNumber>
<ReferenceNo>ABCED11212280008</ReferenceNo>
<Name>Customer Name2</Name>
<Address>Customer Address2</Address>
</Booking>
<BookingDetail>
<ID>208</ID>
<BookingID>33</BookingID>
<OrderItem>Item1</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>209</ID>
<BookingID>33</BookingID>
<OrderItem>Item2</OrderItem>
</BookingDetail>
<BookingDetail>
<ID>210</ID>
<BookingID>33</BookingID>
<OrderItem>Item3</OrderItem>
</BookingDetail>
</CompleteBooking>
谁能帮我创建这种类型的 XML?
最佳答案
使用 System.Xml.Serialization,创建您的预订对象:
public class XMLEntities
{
[XmlRoot(ElementName = "CompleteBooking")]
public class CompleteBooking
{
[XmlElement(ElementName = "Booking")]
public Booking Bookings { get; set; }
[XmlElement(ElementName = "BookingDetail")]
public List<BookingDetail> BookingDetail { get; set; }
}
public class Booking
{
[XmlElement("ID")]
public int ID { get; set; }
[XmlElement("BookingNumber")]
public int BookingNumber { get; set; }
[XmlElement("ReferenceNumber")]
public string ReferenceNumber { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Address")]
public string Address { get; set; }
}
public class BookingDetail
{
[XmlElement("ID")]
public int ID { get; set; }
[XmlElement("BookingID")]
public int BookingID { get; set; }
[XmlElement("OrderItem")]
public string OrderItem { get; set; }
}
}
现在,对于序列化器对象(用于实际将对象序列化为字符串):
public class XMLEntitiesSerializer
{
public string Serialize(XMLEntities.CompleteBooking completeBooking)
{
var serializedXml = string.Empty;
var serializer = new XmlSerializer(typeof (XMLEntities.CompleteBooking));
var stringWriter = new System.IO.StringWriter();
try
{
serializer.Serialize(stringWriter, completeBooking);
serializedXml = stringWriter.ToString();
}
catch(Exception ex)
{
//Log the stuff
}
finally
{
stringWriter.Close();
}
return serializedXml;
}
}
现在,您只需创建正确定义的对象并在某种函数中进行序列化。例如,在控制台应用程序的主要方法中:
public static void Main(string[] args)
{
//Create new booking objects
var booking1 = new XMLEntities.Booking()
{
ID = 32,
BookingNumber = 1212001,
ReferenceNumber = "ABCED11212280007",
Name = "Customer Name1",
Address = "Customer Address"
};
var booking2 = new XMLEntities.Booking()
{
ID = 33,
BookingNumber = 12120002,
ReferenceNumber = "ABCED11212280008",
Name = "Customer Name2",
Address = "Customer Address2"
};
//Create the booking details objects
var booking1Detail1 = new XMLEntities.BookingDetail()
{
ID = 206,
BookingID = 32,
OrderItem = "Item1"
};
var booking1Detail2 = new XMLEntities.BookingDetail()
{
ID = 207,
BookingID = 32,
OrderItem = "Item2"
};
var booking2Detail1 = new XMLEntities.BookingDetail()
{
ID = 208,
BookingID = 33,
OrderItem = "Item1"
};
var booking2Detail2 = new XMLEntities.BookingDetail()
{
ID = 209,
BookingID = 32,
OrderItem = "Item2"
};
var booking2Detail3 = new XMLEntities.BookingDetail()
{
ID = 210,
BookingID = 32,
OrderItem = "Item3"
};
//Smash them together so we can serialize as one
var completeBooking1 = new XMLEntities.CompleteBooking()
{
Bookings = booking1,
BookingDetail = new List<XMLEntities.BookingDetail>()
{
booking1Detail1,
booking1Detail2
}
};
var completeBooking2 = new XMLEntities.CompleteBooking()
{
Bookings = booking2,
BookingDetail = new List<XMLEntities.BookingDetail>()
{
booking2Detail1,
booking2Detail2,
booking2Detail3
}
};
//Serialize the data for each of the booking objects
var serializedXML = new XMLEntitiesSerializer();
var xml = string.Empty;
var booking1XmlString = serializedXML.Serialize(completeBooking1);
var booking2XmlString = serializedXML.Serialize(completeBooking2);
Console.ReadLine();
}
显然,您可以在重构函数中使用它(这会让生活更轻松),但这会为您提供所需的一般输出。
关于c# - 从数据创建的 XML 结构中面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889419/
我正在安装一个 react-app 并面临一些问题。我试图通过删除 /node-modules 来修复它并重新安装,但它仍然给我一些问题。我是一个 ubuntu 用户。请帮我解决一下这个。这是错误日志
首先,我是 C 的初学者,所以如果我的问题看起来很愚蠢,我很抱歉。 我正在学习如何在 C 中使用冒泡排序算法,我通过以下代码: #include int main() { int ctr,
我正在使用 HtmlUnitDriver 打开链接。这是我的代码: HtmlUnitDriver webDriver = new HtmlUnitDriver(); webDriver.get("so
我是 Camel 新手,我已经为分离器编写了代码。我编写了一个 context.xml,其中包含用于映射 POJO 的路由和 Bean,以及一个 FileSplitter.java 文件,其中包含以下
我不断收到错误:TestException.java:8: 错误: 未报告的异常 Throwable;必须被捕获或宣布被抛出 throw new ParentException().initCause
您能看一下this demo吗?让我知道为什么我无法定位所选 anchor 链接的下一个和上一个 section 的 id? 为了获得下一个,我尝试了所有 var target = $(this).
我正在为我们使用 asp.Net MVC 的应用程序尝试 JqGrid。我无法获得数据显示。我不确定是什么问题。 这是我的查看代码: @{ ViewBag.Title = "Sea
我想将网页显示为模式弹出窗口。 Response.Write("detailedresults=window.showModalDialog('NewFile.aspx','Data','left=(
当我尝试从不同域下载视频时,遇到 CORS 错误。我尝试了很多方法来解决它但无法解决。下面是我的js代码。 getVideoFile = function () { var xhr = new XML
我的 ADF Web 应用程序面临兼容性问题。尝试添加元标记 - ' '甚至尝试注入(inject)java脚本来抑制兼容性问题,但没有任何反射(reflect)。下面是java脚本- ` var
在这个项目中,我遇到了一些运行时错误,我厌倦了通过将错误粘贴到谷歌中来解决它并为此获得适当的结果。但是我无法解决这个问题, 和其他代码很好但是 list 文件显示了一些警告。代码是 `
我实现了一个具有三个选项卡的 TabLayout。当我滑动页面时一切正常,当我只使用标签点击来导航时它也有效。但是,当我滑动页面并单击任何先前选择的选项卡时,问题就出现了,只有选项卡指示器更改为新选项
我想要达到的目标:尝试将数据从我的应用程序字段发送到我在 WebAppServer 上的 Servlet。 我面临 ClassCastException 问题,我尝试实现我在相关讨论中在 StackO
JavaScript 代码: if (document.getElementsByClassName('chkaddress').checked) { $('#DivCommunication
我正在尝试使用 Hazelcast 来使用 SqlPredicate。代码片段: private void testHazelCast() { HazelcastInstance ha
当我从服务器访问图像时,收到 403 禁止错误。 如果我访问音频文件,那么我不会收到任何错误。但如果我正在访问图像文件,那么只有我面临这个问题。 请注意,音频文件的权限是0644,图像的权限也具有相同
我想像sql中的通配符搜索一样执行查询。所以我在nodejs和mongoose中使用正则表达式。当我使用硬代码时它可以工作,但是当我放入变量时它就不起作用。问题出在哪里。 硬代码代码 AlertMod
我正在尝试将 BottomNavigationView 与导航编辑器一起使用。我已经按照给定的方式实现了所有内容,但只显示主页,当我更改选项卡时,它不会更改 fragment 。 这是主要的 Acti
这个问题在这里已经有了答案: Enzyme: simple .to.have not working (1 个回答) 10 个月前关闭。 我有一个组件app.tsx import React, { u
我有多个选项卡(A、B、C),并且在加载“C”选项卡时,模型属性应数据绑定(bind)到选项卡“c”。我面临数据绑定(bind)问题。 三个选项卡(A、B、C)位于另一个 View View A 内。
我是一名优秀的程序员,十分优秀!