none
XDocument.Load()的问题 RRS feed

  • 问题

  • 我有一个XML加载的问题:一个XML文件a.xml,如下:

    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">
     <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
      <Author>tt</Author>
      <LastAuthor>Windows 用户</LastAuthor>
      <Created>2009-04-16T01:45:34Z</Created>
      <LastSaved>2012-10-11T08:08:26Z</LastSaved>
      <Company>CPPEI</Company>
      <Version>12.00</Version>
     </DocumentProperties>
     <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
      <SupBook>
       <Dll/>
       <ExternName>
        <Name>FixChange</Name>
        <Macro>Function</Macro>
        <FunctionGroup>0</FunctionGroup>
       </ExternName>
      </SupBook>
      <WindowHeight>11055</WindowHeight>
      <WindowWidth>15480</WindowWidth>
      <WindowTopX>120</WindowTopX>
      <WindowTopY>15</WindowTopY>
      <ProtectStructure>False</ProtectStructure>
      <ProtectWindows>False</ProtectWindows>
     </ExcelWorkbook>
     <Styles>
      <Style ss:ID="Default" ss:Name="Normal">
       <Alignment ss:Vertical="Center"/>
       <Borders/>
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
       <Interior/>
       <NumberFormat/>
       <Protection/>
      </Style>
      <Style ss:ID="s62">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
      </Style>
      <Style ss:ID="s63">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
       <NumberFormat ss:Format="@"/>
      </Style>
      <Style ss:ID="s64">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
       <NumberFormat ss:Format="0.000"/>
      </Style>
      <Style ss:ID="s65">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
       <Interior/>
       <NumberFormat ss:Format="0.000"/>
      </Style>
      <Style ss:ID="s66">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
       <Interior/>
       <NumberFormat ss:Format="@"/>
      </Style>
      <Style ss:ID="s67">
       <Font ss:FontName="宋体" x:CharSet="134" ss:Size="9"/>
       <Interior/>
       <NumberFormat ss:Format=";;;"/>
      </Style>
     </Styles>
     <Worksheet ss:Name="aa">
      <Table ss:ExpandedColumnCount="15" ss:ExpandedRowCount="1" x:FullColumns="1"
       x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="54"
       ss:DefaultRowHeight="11.25">
       <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="68.25"/>
       <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="93.75"/>
       <Column ss:StyleID="s64" ss:Width="51"/>
       <Column ss:StyleID="s64" ss:Width="40.5"/>
       <Column ss:StyleID="s64" ss:Width="45.75"/>
       <Column ss:StyleID="s65" ss:AutoFitWidth="0" ss:Width="45.75"/>
       <Column ss:StyleID="s65" ss:Width="68.25"/>
       <Column ss:StyleID="s65" ss:Width="48"/>
       <Column ss:StyleID="s65" ss:Width="106.5"/>
       <Column ss:StyleID="s66" ss:AutoFitWidth="0" ss:Width="89.25"/>
       <Column ss:StyleID="s64" ss:Width="24.75"/>
       <Column ss:StyleID="s64" ss:Width="56.25"/>
       <Column ss:StyleID="s64" ss:Width="24.75"/>
       <Column ss:StyleID="s64" ss:Width="56.25"/>
       <Column ss:StyleID="s63" ss:Width="35.25"/>
       <Row ss:AutoFitHeight="0" ss:Hidden="1" ss:StyleID="s63">
        <Cell ss:StyleID="s67"><Data ss:Type="String">**</Data></Cell>
        <Cell ss:StyleID="s67" ss:Formula="=FixChange()"><Data ss:Type="Error">#NAME?</Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
        <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
       </Row>
      </Table>
      <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
       <Unsynced/>
       <Print>
        <ValidPrinterInfo/>
        <PaperSizeIndex>9</PaperSizeIndex>
        <HorizontalResolution>300</HorizontalResolution>
        <VerticalResolution>300</VerticalResolution>
       </Print>
       <Selected/>
       <FreezePanes/>
       <FrozenNoSplit/>
       <SplitHorizontal>2</SplitHorizontal>
       <TopRowBottomPane>2</TopRowBottomPane>
       <SplitVertical>2</SplitVertical>
       <LeftColumnRightPane>2</LeftColumnRightPane>
       <ActivePane>0</ActivePane>
       <Panes>
        <Pane>
         <Number>3</Number>
        </Pane>
        <Pane>
         <Number>1</Number>
        </Pane>
        <Pane>
         <Number>2</Number>
        </Pane>
        <Pane>
         <Number>0</Number>
         <ActiveRow>3</ActiveRow>
         <ActiveCol>3</ActiveCol>
        </Pane>
       </Panes>
       <ProtectObjects>False</ProtectObjects>
       <ProtectScenarios>False</ProtectScenarios>
      </WorksheetOptions>
     </Worksheet>
    </Workbook>

    用 XDocument xmld = XDocument.Load(context.Server.MapPath(@"App_Data\a.xml"));

    此时的xmld变为

    <?xml version="1.0" encoding="utf-8"?>
    <?mso-application progid="Excel.Sheet"?>
    <ss:Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
      <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
        <Author>tt</Author>
        <LastAuthor>Windows 用户</LastAuthor>
        <Created>2009-04-16T01:45:34Z</Created>
        <LastSaved>2012-10-11T08:08:26Z</LastSaved>
        <Company>CPPEI</Company>
        <Version>12.00</Version>
      </DocumentProperties>
      <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
        <SupBook>
          <Dll />
          <ExternName>
            <Name>FixChange</Name>
            <Macro>Function</Macro>
            <FunctionGroup>0</FunctionGroup>
          </ExternName>
        </SupBook>
        <WindowHeight>11055</WindowHeight>
        <WindowWidth>15480</WindowWidth>
        <WindowTopX>120</WindowTopX>
        <WindowTopY>15</WindowTopY>
        <ProtectStructure>False</ProtectStructure>
        <ProtectWindows>False</ProtectWindows>
      </ExcelWorkbook>
      <ss:Styles>
        <ss:Style ss:ID="Default" ss:Name="Normal">
          <ss:Alignment ss:Vertical="Center" />
          <ss:Borders />
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" />
          <ss:Interior />
          <ss:NumberFormat />
          <ss:Protection />
        </ss:Style>
        <ss:Style ss:ID="s62">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
        </ss:Style>
        <ss:Style ss:ID="s63">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
          <ss:NumberFormat ss:Format="@" />
        </ss:Style>
        <ss:Style ss:ID="s64">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
          <ss:NumberFormat ss:Format="0.000" />
        </ss:Style>
        <ss:Style ss:ID="s65">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
          <ss:Interior />
          <ss:NumberFormat ss:Format="0.000" />
        </ss:Style>
        <ss:Style ss:ID="s66">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
          <ss:Interior />
          <ss:NumberFormat ss:Format="@" />
        </ss:Style>
        <ss:Style ss:ID="s67">
          <ss:Font ss:FontName="宋体" x:CharSet="134" ss:Size="9" />
          <ss:Interior />
          <ss:NumberFormat ss:Format=";;;" />
        </ss:Style>
      </ss:Styles>
      <ss:Worksheet ss:Name="aa">
        <ss:Table ss:ExpandedColumnCount="15" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="11.25">
          <ss:Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="68.25" />
          <ss:Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="93.75" />
          <ss:Column ss:StyleID="s64" ss:Width="51" />
          <ss:Column ss:StyleID="s64" ss:Width="40.5" />
          <ss:Column ss:StyleID="s64" ss:Width="45.75" />
          <ss:Column ss:StyleID="s65" ss:AutoFitWidth="0" ss:Width="45.75" />
          <ss:Column ss:StyleID="s65" ss:Width="68.25" />
          <ss:Column ss:StyleID="s65" ss:Width="48" />
          <ss:Column ss:StyleID="s65" ss:Width="106.5" />
          <ss:Column ss:StyleID="s66" ss:AutoFitWidth="0" ss:Width="89.25" />
          <ss:Column ss:StyleID="s64" ss:Width="24.75" />
          <ss:Column ss:StyleID="s64" ss:Width="56.25" />
          <ss:Column ss:StyleID="s64" ss:Width="24.75" />
          <ss:Column ss:StyleID="s64" ss:Width="56.25" />
          <ss:Column ss:StyleID="s63" ss:Width="35.25" />
          <ss:Row ss:AutoFitHeight="0" ss:Hidden="1" ss:StyleID="s63">
            <ss:Cell ss:StyleID="s67">
              <ss:Data ss:Type="String">**</ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s67" ss:Formula="=FixChange()">
              <ss:Data ss:Type="Error">#NAME?</ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
            <ss:Cell ss:StyleID="s66">
              <ss:Data ss:Type="String"></ss:Data>
            </ss:Cell>
          </ss:Row>
        </ss:Table>
        <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
          <Unsynced />
          <Print>
            <ValidPrinterInfo />
            <PaperSizeIndex>9</PaperSizeIndex>
            <HorizontalResolution>300</HorizontalResolution>
            <VerticalResolution>300</VerticalResolution>
          </Print>
          <Selected />
          <FreezePanes />
          <FrozenNoSplit />
          <SplitHorizontal>2</SplitHorizontal>
          <TopRowBottomPane>2</TopRowBottomPane>
          <SplitVertical>2</SplitVertical>
          <LeftColumnRightPane>2</LeftColumnRightPane>
          <ActivePane>0</ActivePane>
          <Panes>
            <Pane>
              <Number>3</Number>
            </Pane>
            <Pane>
              <Number>1</Number>
            </Pane>
            <Pane>
              <Number>2</Number>
            </Pane>
            <Pane>
              <Number>0</Number>
              <ActiveRow>3</ActiveRow>
              <ActiveCol>3</ActiveCol>
            </Pane>
          </Panes>
          <ProtectObjects>False</ProtectObjects>
          <ProtectScenarios>False</ProtectScenarios>
        </WorksheetOptions>
      </ss:Worksheet>
    </ss:Workbook>

    这是为什么啊?

    load方法把很多标签都加上“ss”了,这是为什么啊?我不想让其加上“ss”,我想让其保持原样;



    大其心,可容天下之物; 虚其心,可受天下之善;

    2012年10月12日 7:00

答案

  • 原因在这里

    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">

    你的这2个名称空间重复了,默认的名称空间跟ss是一样的,所以都给加上ss了。你把

    xmlns="urn:schemas-microsoft-com:office:spreadsheet"

    去掉或者改成别的都可以了


    【孟子E章】

    • 已标记为答案 lfofiug 2012年11月8日 12:32
    2012年10月15日 5:23
    版主
  • 或者把默认的放在最后,这样

    <Workbook
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40"  
     xmlns="urn:schemas-microsoft-com:office:spreadsheet">


    【孟子E章】

    • 已标记为答案 lfofiug 2012年11月8日 12:32
    2012年10月15日 5:31
    版主

全部回复

  • 原因在这里

    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">

    你的这2个名称空间重复了,默认的名称空间跟ss是一样的,所以都给加上ss了。你把

    xmlns="urn:schemas-microsoft-com:office:spreadsheet"

    去掉或者改成别的都可以了


    【孟子E章】

    • 已标记为答案 lfofiug 2012年11月8日 12:32
    2012年10月15日 5:23
    版主
  • 或者把默认的放在最后,这样

    <Workbook
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40"  
     xmlns="urn:schemas-microsoft-com:office:spreadsheet">


    【孟子E章】

    • 已标记为答案 lfofiug 2012年11月8日 12:32
    2012年10月15日 5:31
    版主