簡體   English   中英

在vb.net中使用父節點和子節點創建xml

[英]create xml with parent and child node in vb.net

我需要通過從某個位置讀取 pdf 文件名來創建 xml。我編寫了代碼但無法獲得迭代子節點。請幫我做同樣的事情

樣本文件名:ABC_2345_P1.pdf ABC_2111_Q1.pdf ABC_1225_Q2.pdf

Out XML 應該要求如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Folder>
    <PolicyFrom>ABC</PolicyFrom>
    <Documents>
        <Doc>
            <DocGuid>2345</DocGuid>
                        <DocType>P1</DocType>
                        <DocName>ABC_2345_P1.pdf</DocName>

        </Doc>
        <Doc>
            <DocGuid>2111</DocGuid>
                        <DocType>Q1</DocType>
                        <DocName>ABC_2111_Q1.pdf</DocName>
    </Doc>
        <Doc>
            <DocGuid>1225</DocGuid>
                        <DocType>Q2</DocType>
                        <DocName>ABC_1225_Q2.pdf</DocName>
    </Doc>
    </Documents>
</Folder>

我寫了一個代碼,但它沒有創建迭代子節點,請幫我糾正:

For i As Integer = 1 To _NoOfFiles
                        'Dim FileNameSeq = _DocIssueDate & "_" & _DocTypeCode & "_" & _PolicyNo & "_" & _CompanyCode & "_" & _Case_id & "_" & _NoOfFiles & "_" & _FileNo & "_" & _PStartDate
                        Dim FileNameSeq = _PolicyFrom & "_" & _DocGuid & "_" & _DocType & "_" & _DocName

                        If File.Exists(_SOURCEPDFPATHWITHOUTFILE & "\" & FileNameSeq & ".pdf") Then
                            Dim FileLocation As DirectoryInfo = New DirectoryInfo("C:\Folder\Subfolder\Data\Input\")
                            Dim FileLoc As String = "C:\Folder\Subfolder\Data\Input\"
                            'Dim fi As FileInfo() = FileLocation.GetFiles(_DocIssueDate & "_" & _DocTypeCode & "_" & _PolicyNo & "_" & _CompanyCode & "_" & _Case_id & "_" & _NoOfFiles & "_" & i & "_" & _PStartDate & ".pdf")
                            For Each file As String In IO.Directory.GetFiles(_SOURCEPDFPATHWITHOUTFILE, "" _PolicyFrom & "_" & _DocGuid & "_" & _DocType & "_" & _DocName & ".pdf", IO.SearchOption.AllDirectories)
                                'The next line of code gets file names with extensions from searched directories and subdirectories
                                Dim fName As String = IO.Path.GetFileName(file)
                                Console.WriteLine(fName)
                                If i = 1 Then
                                    Dim Firstfile As String = fName
                                    Dim companyFile As XElement = New XElement("Folder",
                                    New XElement("PolicyFrom", New Object() ,
                                    New XElement("Doc",
                                    New XElement("DocGuid", _SOURCEPDFPATH_FileName,
                                    New XElement("DocType", _SOURCEPDFPATH_FileName,
                                    New XElement("DocName", _SOURCEPDFPATH_FileName,
                                           ))))
                            })
                    })
                    )

                                    companyFile.Save("D:\PDF_UPLD\" & _SOURCEPDFPATH_FileName & ".xml")

                                End If
                                'System.IO.File.Delete(FileLoc & fName)
                            Next

                        End If
                    Next


                Else

                    Continue For
                End If


            Next

這是一些創建您需要的 xml 結構的自包含代碼:

var xDocument = new XDocument(new XElement("Folder"));

xDocument.Root.Add(new XElement("PolicyFrom", "ABC"));

var documents = new XElement("Documents");

for(var i = 0; i < 3; i++)
{
    var doc = new XElement("Doc");

    doc.Add(new XElement("DocGuid", "2345"));

    doc.Add(new XElement("DocType", "P1"));

    doc.Add(new XElement("DocName", "ABC_2345_P1.pdf"));

    documents.Add(doc);
}

xDocument.Root.Add(documents);

您所要做的就是用您的循環替換 for 循環,並使用正確的文件信息填充 xml 節點。

暫無
暫無

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

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