[求助]Delphi XE10中读取XML的问题?

modisxp 2016-06-20 09:51:54
开发环境:Delphi XE10,
代码:采用控件TXMLDocument,命名为XMLDoc1。
XMLDoc1.LoadFromXML('t.xml');
Memo1.Lines:=XMLDoc1.XML.

错误:“文档顶层存在无效内容,Line:1”。

请问是什么原因,请指教。

xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<FDBS Version="15"><Manager UpdatesRegistry="True"><TableList><Table Name="FDQuery1" SourceName="daydb" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50"><ColumnList><Column Name="TIME" SourceName="TIME" SourceID="1" DataType="DateTime" Scale="1000" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginColName=""TIME"" SourceScale="1000" SourceSize="7"/><Column Name="AVGV" SourceName="AVGV" SourceID="2" DataType="BCD" Precision="11" Scale="3" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginColName="AVGV" SourcePrecision="11" SourceScale="3" SourceSize="22"/></ColumnList><ConstraintList/><ViewList/><RowList><Row RowID="0"><Original TIME="20160402T000000" AVGV="8303"/></Row><Row RowID="1"><Original TIME="20160403T000000" AVGV="7750"/></Row><Row RowID="2"><Original TIME="20160404T000000" AVGV="7954"/></Row></RowList></Table></TableList><RelationList/><UpdatesJournal><Changes/></UpdatesJournal></Manager></FDBS>
...全文
496 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
modisxp 2016-06-21
  • 打赏
  • 举报
回复
非常感谢您的回复,还有不明请指教:上述是xml是FDQuery1.SaveToFile生成的文件。另外,答复中提到首行缺少2个关键字符,是哪2个字符?我对比了下,好像是首行删除了“encoding="utf-8"”。敬请再次指教!
引用 2 楼 lyhoo163 的回复:
上面文本上传有识。应该这样:
<?xml version="1.0"?>
<FDBS Version="15">
  <Manager UpdatesRegistry="True">
    <TableList>
      <Table Name="FDQuery1" SourceName="daydb" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50">
        <ColumnList>
          <Column Name="TIME" SourceName="TIME" SourceID="1" DataType="DateTime" Scale="1000" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginColName=""TIME"" SourceScale="1000" SourceSize="7"/>
          <Column Name="AVGV" SourceName="AVGV" SourceID="2" DataType="BCD" Precision="11" Scale="3" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginColName="AVGV" SourcePrecision="11" SourceScale="3" SourceSize="22"/>
        </ColumnList>
        <ConstraintList/>
        <ViewList/>
        <RowList>
          <Row RowID="0">
            <Original TIME="20160402T000000" AVGV="8303"/>
          </Row>
          <Row RowID="1">
            <Original TIME="20160403T000000" AVGV="7750"/>
          </Row>
          <Row RowID="2">
            <Original TIME="20160404T000000" AVGV="7954"/>
          </Row>
        </RowList>
      </Table>
    </TableList>
    <RelationList/>
    <UpdatesJournal>
      <Changes/>
    </UpdatesJournal>
  </Manager>
</FDBS>
lyhoo163 2016-06-21
  • 打赏
  • 举报
回复
上面文本上传有识。应该这样:
<?xml version="1.0"?>
<FDBS Version="15">
  <Manager UpdatesRegistry="True">
    <TableList>
      <Table Name="FDQuery1" SourceName="daydb" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50">
        <ColumnList>
          <Column Name="TIME" SourceName="TIME" SourceID="1" DataType="DateTime" Scale="1000" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginColName=""TIME"" SourceScale="1000" SourceSize="7"/>
          <Column Name="AVGV" SourceName="AVGV" SourceID="2" DataType="BCD" Precision="11" Scale="3" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginColName="AVGV" SourcePrecision="11" SourceScale="3" SourceSize="22"/>
        </ColumnList>
        <ConstraintList/>
        <ViewList/>
        <RowList>
          <Row RowID="0">
            <Original TIME="20160402T000000" AVGV="8303"/>
          </Row>
          <Row RowID="1">
            <Original TIME="20160403T000000" AVGV="7750"/>
          </Row>
          <Row RowID="2">
            <Original TIME="20160404T000000" AVGV="7954"/>
          </Row>
        </RowList>
      </Table>
    </TableList>
    <RelationList/>
    <UpdatesJournal>
      <Changes/>
    </UpdatesJournal>
  </Manager>
</FDBS>
lyhoo163 2016-06-21
  • 打赏
  • 举报
回复
你的XML文件不完整,首行缺2个关键字符。修改如下。修改后可以正常读取了。

<?xml version="1.0"?>
<FDBS Version="15">
  <Manager UpdatesRegistry="True">
    <TableList>
      <Table Name="FDQuery1" SourceName="daydb" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50">
        <ColumnList>
          <Column Name="TIME" SourceName="TIME" SourceID="1" DataType="DateTime" Scale="1000" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginColName=""TIME"" SourceScale="1000" SourceSize="7"/>
          <Column Name="AVGV" SourceName="AVGV" SourceID="2" DataType="BCD" Precision="11" Scale="3" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginColName="AVGV" SourcePrecision="11" SourceScale="3" SourceSize="22"/>
        </ColumnList>
        <ConstraintList/>
        <ViewList/>
        <RowList>
          <Row RowID="0">
            <Original TIME="20160402T000000" AVGV="8303"/>
          </Row>
          <Row RowID="1">
            <Original TIME="20160403T000000" AVGV="7750"/>
          </Row>
          <Row RowID="2">
            <Original TIME="20160404T000000" AVGV="7954"/>
          </Row>
        </RowList>
      </Table>
    </TableList>
    <RelationList/>
    <UpdatesJournal>
      <Changes/>
    </UpdatesJournal>
  </Manager>
</FDBS>
CodeCoolie 2016-06-21
  • 打赏
  • 举报
回复
小乖。。。 LoadFromXML() 是从字符串加载 XML LoadFromFile() 是从文件加载 XML 你的例子,两个方法: 1、LoadFromXML() var SL: TStringList; begin try SL := TStringList.Create; SL.LoadFromFile('X:\t.xml'); XMLDoc1.LoadFromXML(SL.Text); finally SL.Free; end; end; 2. LoadFromFile() XMLDoc1.LoadFromFile('X:\t.xml');

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧