C# 如何连接从2个api调用返回的2个xml文件?
我正在使用第三方应用程序的web服务API通过我的web应用程序搜索数据 有一个联系人API和一个客户端API。contacts表包含客户端的ID,但不包含名称。要搜索和显示联系人以及显示客户端的名称,我需要调用这两个APIC# 如何连接从2个api调用返回的2个xml文件?,c#,.net,xml,C#,.net,Xml,我正在使用第三方应用程序的web服务API通过我的web应用程序搜索数据 有一个联系人API和一个客户端API。contacts表包含客户端的ID,但不包含名称。要搜索和显示联系人以及显示客户端的名称,我需要调用这两个API 连接两个结果XML文件的最佳方式是什么?我使用的是.Net 4.0。我会快速地完成它: XDocument .Parse( "<bigDoc>" +XDocument.Parse("<a><b/>&
连接两个结果XML文件的最佳方式是什么?我使用的是.Net 4.0。我会快速地完成它:
XDocument
.Parse(
"<bigDoc>"
+XDocument.Parse("<a><b/></a>").Root
+XDocument.Parse("<c><d/></c>").Root
+"</bigDoc>")
XDocument
.解析(
""
+XDocument.Parse(“”.Root
+XDocument.Parse(“”.Root
+"")
但您可能会遇到各种难以解决的名称空间问题。正如下面所说的,为什么不编写代码来查询这两个文档呢?最好的方法是根本不加入XML文件,除非您确实需要XML格式的数据 无法按原样连接XML文件,因此必须解析这两个文件,连接数据,然后从中创建新的XML文件。我假设您正在查找数据,因此最后一步将是超级步骤 例如,您可以使用LINQtoXML从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
};
如果您调用的是web服务,请确保返回值解析为类定义,而不是普通的旧XML。在客户端代码端,定义一个容器类来保存这两个类。然后,可以根据需要对容器类进行XML序列化/反序列化,生成的XML将正确形成。这将合并文档,而不是加入文档。联系人和客户端之间没有连接,因此结果没有单独的文件有用。API不允许我同时查询这两个文件。我只能从API获取xml文件。每个表一组基本调用,返回xml。@安德鲁:是的,这不是问题。但是,一旦解析了XML文件并加入了数据,就没有必要将数据重新转换为XML格式。