這是我擁有的一個XML文件的一小部分(見下文)。使用LINQ to XML查詢元素時出錯
我能讀我需要什麼,就像我可以得到型和消息等,但在PreflightResultEntry節的一個有一個叫做瓦爾我需要「<Var name="NumPages">8</Var>
元素集「
--
<PreflightResultEntry type="GeneralDocInfo">
<PreflightResultEntryMessage xml:lang="en-US">
<Message>457834a.pdf </Message>
<StringContext>
<BaseString>%FileInfo%</BaseString>
<Const name="Category">GeneralDocInfo</Const>
<Const name="ActionID">-1</Const>
<Instance>
<Var name="FileInfo">
<Var name="DIPath">/V/PitStop/Testing/Mike/Processed Docs on Success/457834a.pdf</Var>
<Var name="CreationDate">D:20120724153648-05'00'</Var>
<Var name="ModDate">D:20120725134534-04'00'</Var>
<Var name="Producer">Adobe PDF Library 10.0</Var>
<Var name="Creator">Acrobat PDFMaker 10.1 for Word</Var>
<Var name="Author">DOL Comments</Var>
<Var name="Title"/>
<Var name="Subject"/>
<Var name="Keywords"/>
<Var name="Trapped">1</Var>
<Var name="NumPages">8</Var>
<Var name="Major">1</Var>
<Var name="Minor">5</Var>
<Var name="WasRepairedOnOpen">0</Var>
<Var name="IsLinearized">0</Var>
<Var name="ContainsThumbnails">0</Var>
<Var name="LeftToRightReading">1</Var>
<Var name="ContainsJobTicket">0</Var>
<Var name="EncryptionType">1</Var>
<Var name="Permissions">-1</Var>
<Var name="PrinergyTraps">3</Var>
</Var>
<Location page="-1"/>
</Instance>
</StringContext>
</PreflightResultEntryMessage>
</PreflightResultEntry>
---
這裏我已經得到了適用於郵件和類型
List<PitStopMessage> messages = XDocument.Load(file)
.Descendants("PreflightResultEntryMessage")
.Where(x => x.Parent != null)
.Select(x => new PitStopMessage()
{
message = x.Element("Message").Value,
type = x.Parent.Attribute("type").Value,
xmllevel = x.Parent.Attribute("level") != null ? x.Parent.Attribute("level").Value : String.Empty,
link = 0
}).ToList();
我需要一個新的查詢元素var只有當它退出父元素PreflightResultEntry
這裏我到目前爲止,但它給了我一個錯誤「對象引用未設置爲對象的實例」。這是告訴我在找什麼(元素)不存在。
List<PitStopPages> messages = XDocument.Load(file)
.Descendants("PreflightResultEntryMessage")
.Where(x => x.Parent != null && x.Parent.Attribute("type").Value == "GeneralDocInfo" && x.Parent.Element("Var").Value == "NumPages")
.Select(x => new PitStopPages()
{
Pages = x.Parent.Attribute("name").Value
}).ToList();
謝謝,但我提供的XML文檔只是保存文檔的一個片段。當我將代碼應用於整個XML文檔文檔時,出現以下錯誤:「根級別的數據無效,行1,位置1」。 。一些元素不具備其他元素的所有元素。所以可能有元素var,有些可能不會。我認爲這就是爲什麼我有錯誤。 – Mike
好吧我發現問題有一個DTD在文檔的頂部,一旦我刪除它的工作,謝謝 – Mike