簡體   English   中英

XDocument.parse 將字符串解析為一個元素

[英]XDocument.parse parsing string as one element

當我使用 XDocument.parse 時,它將整個字符串解析為一個元素。解析的文檔沒有結構。我正在使用正則表達式查找 XML 字符串我需要處理。這是我的代碼

int total=1;
                List<XDocument> documents = new List<XDocument>();

                Match collection = Regex.Match(innerXMl, @"<claimDetails" + total + @">[\s\S]+          
                <\/claimDetails" + total + ">");

                Regex regex = new Regex(@"<[\/]{0,1}?claimDetails"+total+">");

                System.Xml.XmlDocument document = new System.Xml.XmlDocument();

                if (collection.Success)
                {

                    string value = collection.Value;

value變量的值為

<claimDetails1>
  <regNo1>DL12SG7754</regNo1>
  <chasisNo1>ME4JF505EG7144924</chasisNo1>
  <engineNo1>JF50E73144192</engineNo1>
  <insurerName1>Shriram General Insurance Co. Ltd.</insurerName1>
  <typeOfClaim1>OD</typeOfClaim1>
  <dateOfLoss1>2020-02-06</dateOfLoss1>
  <claimIntimationDate1>2020-02-12</claimIntimationDate1>
  <ODClaimsPaid1>8954</ODClaimsPaid1>
  <whetherTotalLossClaim1>No</whetherTotalLossClaim1>
  <whetherTheftClaim1>No</whetherTheftClaim1>
  <totalTPClaimsPaid1>0.0</totalTPClaimsPaid1>
  <tpOpenClaimProvison1>0</tpOpenClaimProvison1>
  <tpCloseClaimProvison1>0</tpCloseClaimProvison1>
  <expensesPaid1>0</expensesPaid1>
  <claimstatus1>Claim Fully settled</claimstatus1>
  <searchBasedOn1>REG_NUM</searchBasedOn1>
</claimDetails1>

我想把它解析成 Xdocument。


                    documents.Add(XDocument.Parse(value));
                }

上面的行將值變量解析為 Xdocument object 沒有錯誤,但整個文檔只有一個元素,即claimDetails1innerXml as entire thing in between 。請幫助。

XDocument.Parse 從您傳遞的字符串創建一個 XDocument。 然后使用 XDocument 反序列化 XML 以獲得所需的值。

看看https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xdocument.parse?=view。

您的問題並不完全清楚,也不確定您所說的“無結構”是什么意思(即它是一個不解析的壞 xml 還是只是隨機結構化數據),所以如果它不是您正在尋找的,我會更新我的答案為了。

List<XElement> documents = new List<XElement>();
XDocument xdoc = XDocument.Parse(EntireXMLstring);
if (xdoc.Descendants("claimDetails1").Any())
{
    IEnumerable<XElement> requiredNode = xDoc.Descendants("claimDetails");
    documents.AddRange(requiredNode);
}

暫無
暫無

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

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