2011-04-26 44 views
0

考慮以下幾點:Linq to XML解析幫助 - 獲取元素?

- <ArrayOfWsParcelDocIndexIAS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
- <wsParcelDocIndexIAS> 
    <locatorNum xmlns="http://xxx/webservices/wsDocumentIndex/">131312</locatorNum> 
    <docType xmlns="http://xxx/webservices/wsDocumentIndex/">KIOOLX_DOCINDEX</docType> 
    <docID xmlns="http://xxx/webservices/wsDocumentIndex/">234234</docID> 
    <docName xmlns="http://xxx/webservices/wsDocumentIndex/">Document - 7/1/2008</docName> 
    <fileExists xmlns="http://xxx/webservices/wsDocumentIndex/">true</fileExists> 
    <fileFormat xmlns="http://xxx/webservices/wsDocumentIndex/">PDF</fileFormat> 
    </wsParcelDocIndexIAS> 
- <wsParcelDocIndexIAS> 
    <locatorNum xmlns="http://xxx/webservices/wsDocumentIndex/">131312</locatorNum> 

我試圖檢索與

var documentElements = from docels in root.Elements("wsParcelDocIndexIAS") select docels; 

然後

foreach (XElement documentElement in documentElements) 
      { 
       XElement id = documentElement.Element("locatorNum"); 
       XElement file_type = documentElement.Element("fileFormat"); 

每個元素然而,當ID和FILE_TYPE是空的語法我用來嘗試獲得它們的價值。

我在這裏做錯了什麼?

感謝

回答

2

你沒有指定命名空間。試試這個:

XNamespace ns = "http://xxx/webservices/wsDocumentIndex/"; 
foreach (XElement documentElement in documentElements) 
{ 
    XElement id = documentElement.Element(ns + "locatorNum"); 
    XElement file_type = documentElement.Element(ns + "fileFormat"); 
    ... 
} 
1

XML中的元素在命名空間"http://xxx/webservices/wsDocumentIndex/",但你給Element方法的名字都沒有。你需要創建一個namespace和名稱的XName(有重載+運營商爲):

XNamespace ns = "http://xxx/webservices/wsDocumentIndex/"; 
foreach (XElement documentElement in documentElements) 
{ 
    XElement id = documentElement.Element(ns + "locatorNum"); 
    XElement file_type = documentElement.Element(ns + "fileFormat"); 
    // ...