我有一個Web服務,它需要以xml格式輸入並且輸入需要被編碼。我工作的環境是.NET 4.5,後面的代碼是c#。我必須在SOAP請求中包含編碼的xml輸入,並將其發送到將輸出作爲SOAP響應發回的服務。我可以發送SOAP請求並接收響應,但我在發送xml輸入時遇到了問題。輸入涉及oracle的數據。比如我有一個表的客戶在運行時創建XML
客戶
CustomerName | key | Value |
______________________________________
AAA | Grocery | 10 |
AAA | Clothing | null |
在上表中,如果值都是空我需要指的是與外鍵=「關鍵」的其他表,並從價值另一張桌子。
我想構建XML,因爲我從查詢中獲取值。所以,如果我通過傳遞「AAA」查詢客戶表,首先我要讀的雜貨店和值10和XML應該像
<customer>
<Grocery>10</Grocery>
</customer>
然後我讀下一行我看到的服裝,則價值服裝是空的,所以我會在訂單類型值(服裝)傳遞給另一個表,並得到orderValue並追加到上面的XML獲得最終的XML
<customer>
<Grocery>10</Grocery
</Clothing>value from other table</Clothing>
</customer>
這就像從數據庫中獲取價值構建鍵值對。現在我的代碼使用datareader.getValues讀取一行的所有值並將其存儲在數組中。我試圖從數組中創建xml,但問題是xml沒有被添加,而是被覆蓋寫入。
using (OracleConnection conn = new OracleConnection(dbConnectionString))
{
conn.Open();
using (OracleCommand comm = new OracleCommand(query, conn))
{
using (OracleDataReader dr = comm.ExecuteReader())
{
while (dr.Read())
{
Object[] values = new Object[dr.FieldCount];
int fieldCount = dr.GetValues(values);
XElement xmlInput =
new XElement("Document",
new XElement(values[1].ToString(), values[0].ToString())
);
XElement xmlTree = new XElement("Document");
foreach (XElement e1 in xmlInput.Elements())
{
xmlTree.Add(new XElement("Document",
new XElement(columnName,rowValue)));
}
xmlInput.Add(xmlTree);
}
}
}
}
那麼,如何在數據讀取器中讀取hey值對時如何追加xml?
謝謝,這是有道理的。但有沒有辦法在我們讀取值時創建xml? –
是的,在讀取新值時調用xmlDocument.Add添加新元素。只確保xmlDocument引用的是要添加值的相同對象。 –