Почему linq to xml не читает файл xml? - PullRequest
0 голосов
/ 03 января 2012

Я занимаюсь разработкой веб-части silverlight для sharepoint 2010. В моем проекте я скачал файл xlsx с сервера sharepoint в локальное изолированное хранилище.Теперь я заархивирую файл xlsx с помощью dll ICSharpCode.SharpZipLib.Silverlight, а затем разархивирую этот заархивированный файл в целевую папку.Все это делается программно.Когда я распаковываю файл, он создает папки _reslx, customXml, docenter code hereProps, xl внутри целевой папки.В папке xl находится sharedStrings.xml, который является основным XML-файлом.Этот файл содержит все содержимое исходного файла xlsx.Я успешно загружаю xml-файл со следующим кодом.

xmlDoc = XDocument.Load(readFile);

Я не получаю xml-выражение в загруженном xml-файле.Однако я вижу сокращение xml со следующим предложением.

XDeclaration a = xmlDoc.Declaration;

В 'a' я получаю значение "{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>}" Я получаю следующий файл xml после загрузки.

 <sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="67" uniqueCount="39">
  <si>
    <t>INVOICE</t>
  </si>
  <si>
    <t>INVOICE #</t>
  </si>
  <si>
    <t>Bill To:</t>
  </si>
  <si>
    <t>DESCRIPTION</t>
  </si>
  <si>
    <t>AMOUNT</t>
  </si>
  <si>
    <t>TOTAL</t>
  </si>
  <si>
    <t>FOR:</t>
  </si>
  <si>
    <t>PBS</t>
  </si>
  <si>
    <t>8108 SE Coconut St.</t>
  </si>
  <si>
    <t>Hobe Sound, FL 33455</t>
  </si>
  <si>
    <t>772-349-6317 Phone  772-675-9100 Fax</t>
  </si>
  <si>
    <t>EIN 20-5268843</t>
  </si>
  <si>
    <t>Provider 693068996</t>
  </si>
  <si>
    <t>Rate</t>
  </si>
  <si>
    <t>Units</t>
  </si>
  <si>
    <t>DATE</t>
  </si>
  <si>
    <t>Michael Nolan Ph.D. BCBA</t>
  </si>
  <si>
    <t>____________________________________________</t>
  </si>
  <si>
    <t>BCBA                          Date</t>
  </si>
  <si>
    <t>CLIENT:</t>
  </si>
  <si>
    <t>Date:</t>
  </si>
  <si>
    <t>Behavior Assistant- L. Bresson</t>
  </si>
  <si>
    <t>Email:</t>
  </si>
  <si>
    <t>1 Unit = 1 hour</t>
  </si>
  <si>
    <t>TOTALS</t>
  </si>
  <si>
    <t>cvt1970@juno.com</t>
  </si>
  <si>
    <t>Attn: Cecilia</t>
  </si>
  <si>
    <t>Behavior Assistant- B. Bresson</t>
  </si>
  <si>
    <t>Behaviror Ass't -N Giarratano</t>
  </si>
  <si>
    <t>Signature of Representatives Approval           Date</t>
  </si>
  <si>
    <r>
      <t xml:space="preserve">Behavior Asst- </t>
    </r>
    <r>
      <rPr>
        <sz val="9" />
        <rFont val="Arial" />
        <family val="2" />
      </rPr>
      <t>N Giarratano-</t>
    </r>
    <r>
      <rPr>
        <sz val="10" />
        <rFont val="Arial" />
        <family val="2" />
      </rPr>
      <t>08</t>
    </r>
  </si>
  <si>
    <t>Behavior Asst- B. Bresson-08</t>
  </si>
  <si>
    <t>Behavior Asst- L. Bresson-08</t>
  </si>
  <si>
    <t>&lt;@Invoice&gt;</t>
  </si>
  <si>
    <t>&lt;@For&gt;</t>
  </si>
  <si>
    <t>&lt;@Client&gt;</t>
  </si>
  <si>
    <t>&lt;@Caregiver&gt;</t>
  </si>
  <si>
    <t>&lt;@Email,@Address,@City,@State,@Zip&gt;</t>
  </si>
  <si>
    <t>&lt;@Date&gt;</t>
  </si>
</sst>

Когда я запрашиваю этот xml-файл, я получаю результат в 'eles', так как «Перечисление не дало результатов».Я использую следующий запрос

var eles = from c in xmlDoc.Descendants("si")
                       select c;

Почему мой XML-файл не читает правильно.Можете ли вы сказать мне, где я иду не так?или не могли бы вы предоставить мне любую ссылку, с помощью которой я могу решить вышеуказанную проблему?

1 Ответ

3 голосов
/ 03 января 2012

Укажите пространство имен.

//XNamespace ns = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
//OR - suggested by @nulltoken
XNamespace ns = xmlDoc.Root.Name.Namespace; 
var eles = from c in xmlDoc.Descendants(ns + "si")
                     select c;
...