如何在 vb.net 中解析一串 xml

Posted

技术标签:

【中文标题】如何在 vb.net 中解析一串 xml【英文标题】:How to parse a string of xml in vb.net 【发布时间】:2020-12-13 07:16:31 【问题描述】:

您好,我有一个下面提到的 xml,它是来自数据库的字符串值。我想解析 xml 字符串并且不想保存那些有空白空间的,即这个语句意味着它存储了空白空间。我需要在 if 条件下查找此语句,如果为空则不保存。请让我知道该怎么做。下面是xml之后的vb.net代码

<DocumentElement>
  <TBLCustomizedCodes>
    <tblRowkey>-1</tblRowkey>
    <TBLRowCustomizedCodes>test</TBLRowCustomizedCodes>
    <TBLRowCompliance>N/A</TBLRowCompliance>
  </TBLCustomizedCodes>
  <TBLCustomizedCodes>
    <tblRowkey>-2</tblRowkey>
    <TBLRowCustomizedCodes xml:space="preserve">      </TBLRowCustomizedCodes>
    <TBLRowCompliance xml:space="preserve">      </TBLRowCompliance>
  </TBLCustomizedCodes>
  <TBLCustomizedCodes>
    <tblRowkey>-3</tblRowkey>
    <TBLRowCustomizedCodes xml:space="preserve">      </TBLRowCustomizedCodes>
    <TBLRowCompliance xml:space="preserve">      </TBLRowCompliance>
  </TBLCustomizedCodes>
</DocumentElement>
Dim ds As DataSet = New DataSet("DocumentElement")
        ds.Tables.Add(tempdataTable)

        Dim valueXML As String = ds.GetXml().ToString().Trim()
        SaveInspectionSupplementalLineItem(valueXML)

【问题讨论】:

完全不清楚你想做什么? 我正在尝试读取上面提到的 xml 字符串并查找 ,它在前端存储了一个空的空间实际上是空的文本框。如果上述 xml 语句中提到的空文本框或空格,我不想调用 SaveInspectionSupplementalLineItem(valueXML)。请告诉我该怎么做 @dbasnett - 我正在尝试读取上面提到的 xml 字符串并查找 ,它在前面存储了一个空白空间实际上是空文本框结尾。如果上述 xml 语句中提到的空文本框或空格,我不想调用 SaveInspectionSupplementalLineItem(valueXML)。请告诉我该怎么做 看我的回答。 XElement 和 LINQ。 【参考方案1】:

保存前可以使用String.IsNullOrWhiteSpace(string)检查是否为空

Dim ds As DataSet = New DataSet("DocumentElement")
ds.Tables.Add(tempdataTable)

Dim valueXML As String = ds.GetXml().ToString().Trim()
If Not String.IsNullOrWhiteSpace(valueXML) Then
    SaveInspectionSupplementalLineItem(valueXML)
End If

【讨论】:

不幸的是它不起作用,因为我正在寻找 此语句存储空白空间意味着前端有一个空白文本框,因此我需要获取在xml中保存这个标签,当它为空时,它不应该保存 如果你想选择单个节点并检查值是否为空,你可以使用XmlDocument.SelectSingleNode(node path).InnerText【参考方案2】:

也许这会有所帮助

    Dim xe As XElement
    Dim valueXML As String = ds.GetXml() '.ToString() '??? 
    xe = XElement.Parse(valueXML)
    Dim ie As IEnumerable(Of XElement)
    ie = From el In xe.Descendants Where el.Value.Trim = "" Select el
    If ie.Count > 0 Then
        'there WERE Elements with empty space
        Stop 'look at ie.Results
    Else
        'no empties
    End If

【讨论】:

非常感谢!这有帮助。

以上是关于如何在 vb.net 中解析一串 xml的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 VB.NET 修改 XML 中的 CData

如何从 VB.NET 中的 XML 文件构建唯一的树结构

VB.NET:使用 XDocument 在 XML 文件中添加/编辑/删除 XElement

如何使用正则表达式匹配从 xml 文件中搜索和替换包含占位符标记的文本。 VB.net 或 C#

在 vb.net 中提供文本字段解析器的字符串

如何使用 XmlNode() 作为 VB.NET 中 web 服务的结果?