我正在使用第三方应用程序的web服务API通过我的web应用程序搜索数据。
有一个联系人API和一个客户端API。contacts表保存客户端的ID,但不保存名称。要搜索和显示联系人并显示客户端的名称,我需要调用这两个API。
连接两个生成的XML文件的最佳方式是什么?我使用的是.Net 4.0。
发布于 2010-09-14 21:23:40
我会做得又快又脏:
XDocument
.Parse(
"<bigDoc>"
+XDocument.Parse("<a><b/></a>").Root
+XDocument.Parse("<c><d/></c>").Root
+"</bigDoc>")但您可能会遇到各种难以解决的名称空间问题。如下所述,为什么不编写代码来查询两个单据呢?
发布于 2010-09-14 21:23:46
最好的方法是根本不连接XML文件,除非您确实需要XML格式的数据。
无法按原样连接XML文件,因此必须解析这两个文件,连接数据,然后从中创建一个新的XML文件。我假设您只是在寻找数据,所以最后一步将是多余的。
例如,您可以使用LINQ to XML从XML文件中获取数据并将其连接起来。示例:
XElement contacts = XElement.Parse(contactsXml);
XElement clients = XElement.Parse(clientsXml);
var contactsWithClients =
from contact in contacts.Elements("Contact")
join client in clients.Elements("Client")
on contact.Attribute("ClientId").Value equals client.Attribute("Id").Value
into grp
select new {
ContactName = contact.Attribute("Name").Value,
ClientName = grp.Single().Attribute("Name").Value
};发布于 2010-09-14 22:00:23
如果您调用的是web服务,请确保返回值解析为类定义,而不是普通的旧XML。在客户端代码端,定义一个容器类来容纳这两个类。然后,可以根据需要对容器类进行XML序列化/反序列化,生成的XML将得到正确的格式。
https://stackoverflow.com/questions/3709209
复制相似问题