1

API を呼び出しており、異なるノードのデータを含む C# で xml 要求を送信する必要があります。xml を動的に作成し、ノードをインクリメンタル ネーミングで使用する方法。

例えば

<?xml version="1.0" encoding="UTF-8" ?>
<addCustomer>
    <FirstName_1>ABC</FirstName_1>
    <LastName_1>DEF</LastName_1>
    <FirstName_2>GSH</FirstName_2>
    <LastName_2>ADSF</LastName_2>
</addCustomer>

問題は、FirstName_1、FirstName_2、FirstName_3 などの増分名を持つ xml ノードを作成することです。

4

3 に答える 3

2

Would a customer have more than one FirstName and more than one LastName? If each FirstName and LastName pairs represent a different customer then your xml should look something like....

<?xml version="1.0" encoding="UTF-8" ?>
<AddCustomers>
     <Customer>
          <FirstName>ABC</FirstName>
          <LastName>DEF</LastName>
     </Customer>
     <Customer>
          <FirstName>GSH</FirstName>
          <LastName>ASDF</LastName>
     </Customer>
</AddCustomers>

If you absolutely have to do it the way that you did it in your example, I do not see any way to do this except just using a string_builder and create it yourself within a for loop while incrementing your integer to add to the end of each First and last name attributes. This is not really how xml is supposed to work.

于 2013-02-19T17:20:01.083 に答える
2

私はあなたの痛みを知っています。サードパーティの API に対処しなければならないことは、大きな苦痛になる可能性があります。

を使用する代わりに、 を使用StringBuilderできますXElement

public void AddCustomerInfo(string firstName, string lastName, int index, XElement root)
{
    XElement firstNameInfo = new XElement("FirstName_" + index);
    firstNameInfo.Value = firstName;

    XElement lastNameInfo = new XElement("LastName_" + index);
    lastNameInfo.Value = lastName;

    root.Add(firstNameInfo);
    root.Add(lastNameInfo);
}

次に、次のように関数を呼び出します。

XElement rootElement = new XElement("addCustomer");
AddCustomerInfo("ABC", "DEF", 1, rootElement);

その行をループの中に入れれば、準備は完了です。

于 2013-02-19T17:59:39.490 に答える
0

ここでは、最も簡単なソリューションが最適だと思います。

Customers という Customer オブジェクトのコレクションがあるとします...

StringBuilder xmlForApi = new StringBuilder();
int customerCounter = 1;
foreach(Customer c in Customers)
{
    xmlForApi.AppendFormat("<FirstName_{0}>{1}</FirstName_{0}><LastName_{0}>{2}</LastName_{0}>", customerCounter, c.FirstName, c.LastName)
    customerCounter++;
}
于 2013-02-19T17:46:51.657 に答える