我有一個每月更改的XML數據文件。Visual Basic,讀取XML多級別節點和公共屬性
它包含來自高端打印系統打印的作業的數據。我需要閱讀每個頁面的覆蓋率數據,我可以檢索作業名稱和大部分數據,但似乎無法確定如何爲每個頁面準備好個別覆蓋範圍(將其鏈接到特定頁面)?
示例文件:
<JOBS01_2016>
<JOB_01_06_2016_16_48_17>
<JOB>
<TICKETID>101</TICKETID>
<JOBNAME>A4 booklet and creep test file.pdf</JOBNAME>
<ERRORMESSAGE>Job processing was cancelled</ERRORMESSAGE>
</JOB>
</JOB_01_06_2016_16_48_17>
<JOB_01_09_2016_20_48_39>
<JOB>
<TICKETID>103</TICKETID>
<JOBNAME>BlackA45percol.pdf</JOBNAME>
<HEIGHT>6916</HEIGHT>
<WIDTH>9721</WIDTH>
</JOB>
<MEDIA>
<MEDIAHEIGHT>7016</MEDIAHEIGHT>
<MEDIAWIDTH>9921</MEDIAWIDTH>
<MEDIANAME>Intec Light</MEDIANAME>
<NUMBEROFPAGES>4</NUMBEROFPAGES>
</MEDIA>
<QUALITY>
<RESOLUTIONX>1200</RESOLUTIONX>
<RESOLUTIONY>600</RESOLUTIONY>
<COLORMODE>4</COLORMODE>
<COLORMODENAME>CMYK</COLORMODENAME>
</QUALITY>
<COVERAGE>
<PAGE>
<PAGENUMBER>1</PAGENUMBER>
<C>3483675</C>
<M>3483675</M>
<Y>3948165</Y>
<K>3483675</K>
</PAGE>
<PAGE>
<PAGENUMBER>2</PAGENUMBER>
<C>0</C>
<M>3483675</M>
<Y>3948165</Y>
<K>3483675</K>
</PAGE>
<PAGE>
<PAGENUMBER>3</PAGENUMBER>
<C>3483675</C>
<M>3483675</M>
<Y>464490</Y>
<K>3483675</K>
</PAGE>
<PAGE>
<PAGENUMBER>4</PAGENUMBER>
<C>3483675</C>
<M>3483675</M>
<Y>3948165</Y>
<K>0</K>
</PAGE>
</COVERAGE>
</JOB_01_09_2016_20_48_39>
</JOBS01_2016>
我已經寫代碼的作業名稱(父節點)帶來了什麼?
Dim xml As New XmlDocument
xml.Load("Jobs_01_2016.xml")
ListBox1().Items.Clear()
For Each node As XmlNode In xml.DocumentElement.SelectNodes("*")
ListBox1.Items.Add(node.Name)
Next
然後,用戶選擇作業名稱,並應該得到的作業名稱,作業高度,寬度,分辨率和頁數,以覆蓋每個頁面(鏈接到頁碼)一起。 這我似乎無法得到? 我無法弄清楚如何閱讀與選定作業相關的內容以及具體的頁碼?
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) _
Handles ListBox1.SelectedIndexChanged
Dim Fred As String
Dim sbReadXML As New StringBuilder
Fred = ListBox1.SelectedItem.ToString()
Dim xml As New XmlDocument
xml.Load("Jobs_01_2016.xml")
Dim Jobname As String
Jobname = xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/JOB/JOBNAME").InnerText
sbReadXML.Append("Job Name: ")
sbReadXML.Append(Jobname)
sbReadXML.AppendLine()
Dim MediaHeight As Integer = Integer.Parse(xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/MEDIA/MEDIAHEIGHT").InnerText)
sbReadXML.Append("Media Height: ")
sbReadXML.Append(MediaHeight)
sbReadXML.AppendLine()
Dim MediaWidth As Integer = Integer.Parse(xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/MEDIA/MEDIAWIDTH").InnerText)
sbReadXML.Append("Media Width: ")
sbReadXML.Append(MediaWidth)
sbReadXML.AppendLine()
Dim Nopages As Integer = Integer.Parse(xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/MEDIA/NUMBEROFPAGES").InnerText)
sbReadXML.Append("No of Pages: ")
sbReadXML.Append(Nopages)
sbReadXML.AppendLine()
Dim Printtime As String
Printtime = xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/PRINT/PRINTTIME").InnerText
sbReadXML.Append("Print Time: ")
sbReadXML.Append(Printtime)
sbReadXML.AppendLine()
Dim Resolutionx As Integer = Integer.Parse(xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/QUALITY/RESOLUTIONX").InnerText)
sbReadXML.Append("Horizontal Resolution: ")
sbReadXML.Append(Resolutionx)
sbReadXML.AppendLine()
Dim Resolutiony As Integer = Integer.Parse(xml.SelectSingleNode("/JOBS01_2016/" + Fred + "/QUALITY/RESOLUTIONY").InnerText)
sbReadXML.Append("Vertical Resolution: ")
sbReadXML.Append(Resolutiony)
sbReadXML.AppendLine()
sbReadXML.Append(": ")
txtContent.Text = sbReadXML.ToString 'Show Contents
End Sub
任何幫助,將不勝感激。
首先,你可以指定/標籤,它的Visual Basic(VB.Net,VBScript中,VBA等)?其次,您希望通過重新安排數據來改變XML?請張貼您想要的結果。 – Parfait
Visual Studio 2013 - Visual Basic - 我沒有嘗試(打算轉換數據)。這個要求是一個作業成本工具,RIP設備輸出這個XML,其中包含作業的打印作業名稱,各種數據,以及用於作業大小的像素,以及用於每個色彩平面的分辨率和像素。我需要創建一個小界面,讀取xml,顯示作業並允許用戶選擇每個作業,並因此顯示作業成本。 – Squashsparky
爲此,我需要能夠隔離每個作業的覆蓋範圍,每個頁面獨特的顏色和每個着色劑。我似乎無法越過孩子節點。 – Squashsparky