Linq to XML Parsing Help - получение элементов? - PullRequest
0 голосов
/ 26 апреля 2011

Учитывая следующее:

- <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 ]

2 голосов
/ 26 апреля 2011

Вы не указываете пространство имен.Попробуйте это:

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 голос
/ 26 апреля 2011

Элементы в XML находятся в пространстве имен "http://xxx/webservices/wsDocumentIndex/", но имена, которые вы даете методу Element, - нет. Вам необходимо создать 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");
    // ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...