簡體   English   中英

我們可以基於動態生成的xml響應構建linq查詢嗎?

[英]can we build linq query over dynamically generated xml response?

我有一個關於linq的查詢,假設每次都有這個xml響應(我從某台x服務器上獲取)時,我都會得到一個xml響應,但是xml的根元素是相同的,但后代節點(例如內部節點有很多不同的節點)可能存在與否,所以我需要在這個xml上構建linq查詢,這樣就不會有異常拋出,說明某些x1元素或子節點不存在。所以最后它應該使用xml(來自服務器響應的內容)並進行構建查詢。

問候,拉傑。

我過去曾遇到過:xml每次都以完全不同的結構出現。

因此,我構建了一些東西,該東西首先分析了該結構並將該結構存儲在數據庫表中,以便還能夠知道增量並在其上有一些歷史(和差異)。 由於有時需要手動干預(無法預測一切)。

在分析階段之后,可以根據結構分析對新結構進行查詢。

所以我采取了兩步法,也許這也適用於您。

首先,您需要將XML轉換為動態結構。 我找到的第一個庫(雖然沒有嘗試過): https : //www.nuget.org/packages/netfx-System.Xml.DynamicXml/
然后,您可以在動態XML根目錄的頂部添加Linq。
但是,從性能角度來看,這確實是一種糟糕的方法。 我曾經使用動態XML玩過,那非常慢。 也許不是使它動態化,而是可以創建XElement擴展方法(如果將XML加載到XDocument),該擴展方法將返回空節點而不會引發異常,例如(pseudocode):

public static class XElementExtensions
{
  public static XElement SafeGetChild(this XElement node, string childName)
  {
    XElement result;
    if (!node.TryGetChildByName(childName, out result))
      result = node.Document.CreateElement(childName);
    return result;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM