簡體   English   中英

vb.net 刪除或處理 xml 命名空間

[英]vb.net removing or dealing with xml namespaces

我需要從可能具有(可能不總是具有)xmlns 屬性的 xml 文件中讀取數據。 我找不到節點,因為我不知道前綴。 我是 XML 的新手,我找到了幾種解決方案,包括刪除 xmlns 屬性,但它不適用於使用 xelement 訪問 xml 的“新”方法。

Public Function GetHeader(xmlFileName As String, ByRef ispies As Boolean, ByRef isaces As Boolean, ByRef pcdbversiondate As Date, ByRef vcdbversiondate As Date) As String
    Dim xmlDoc As XElement
    Dim xmlNodes As IEnumerable(Of XElement)
    Dim Headertext As String
    Dim header As IEnumerable(Of XElement)

    xmlDoc = XElement.Load(xmlFileName)
    xmlNodes = xmlDoc.Elements()

    If InStr(xmlDoc.Name.ToString, "PIES") > 0 Then
        ispies = True
    End If

    If InStr(xmlDoc.Name.ToString, "ACES") > 0 Then
        isaces = True

    End If
    header = From nm In xmlDoc.Elements("Header")
    Headertext = ""
    For Each ele As XElement In header
        For Each cn As XElement In ele.Descendants
            Headertext += cn.Name.ToString & "=" & cn.Value & vbCrLf
            If cn.Name.ToString = "VcdbVersionDate" Then
                vcdbversiondate = fixDate(cn.Value.ToString)
            End If
            If cn.Name.ToString = "PcdbVersionDate" Then
                pcdbversiondate = fixDate(cn.Value.ToString)
            End If
        Next

    Next
    GetHeader = Headertext

End Function 

這是我必須解決的問題。 xelement 在 name 下有本地名稱,因此 xelement.name.localname 我可以獲得沒有名稱空間前綴的名稱。 查詢看起來像這樣

 header = From nm In xmlDoc.Elements Where nm.Name.LocalName = "Header"

我現在可以解決命名空間問題。 訣竅是試圖找到對 localname 的訪問,在舊方法中,它位於根目錄下,現在位於 name 下。

暫無
暫無

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

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