【问题标题】:XDocument.parse parsing string as one elementXDocument.parse 将字符串解析为一个元素
【发布时间】:2020-05-23 08:08:43
【问题描述】:

当我使用 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));
                }

上面一行将 value 变量解析为 Xdocument 对象,没有错误,但整个文档只有一个元素,即 claimDetails1innerXml as entire thing in between。请帮助。

【问题讨论】:

    标签: c# asp.net linq-to-xml


    【解决方案1】:

    XDocument.Parse 从您传递的字符串创建一个 XDocument。然后使用 XDocument 反序列化 XML 以获得所需的值。

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

    您的问题并不完全清楚,也不确定您所说的“无结构”是什么意思(即它是一个不解析的坏 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2016-04-28
      相关资源
      最近更新 更多