2011-04-26 61 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"); 
    // ...