2014-12-01 75 views
0

我试图获取数据库记录并将它们打印在XML标记中。解析DataTable XML输出,文档元素错误后的垃圾

随着DataTable类,输出是这样的:

<xs:schema 
    xmlns="" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="c" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="c"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="ID" type="xs:int" minOccurs="0"/> 
          <xs:element name="TYPE" type="xs:int" minOccurs="0"/> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:choice> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
<diffgr:diffgram 
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
    <DocumentElement 
     xmlns=""> 
     <c diffgr:id="c1" msdata:rowOrder="0"> 
      <ID>12224</ID> 
      <TYPE>2</TYPE> 
     </c> 
     <c diffgr:id="c2" msdata:rowOrder="1"> 
      <ID>12225</ID> 
      <TYPE>2</TYPE> 
     </c> 
     <c diffgr:id="c3" msdata:rowOrder="2"> 
      <ID>12298</ID> 
      <TYPE>1</TYPE> 
     </c> 
     <c diffgr:id="c4" msdata:rowOrder="3"> 
      <ID>12299</ID> 
      <TYPE>1</TYPE> 
     </c> 
     <c diffgr:id="c5" msdata:rowOrder="4"> 
      <ID>12300</ID> 
      <TYPE>1</TYPE> 
     </c> 
     <c diffgr:id="c6" msdata:rowOrder="5"> 
      <ID>12301</ID> 
      <TYPE>1</TYPE> 
     </c> 
    </DocumentElement> 
</diffgr:diffgram> 

似乎有效,但是当我试图解析它在另一个PHP脚本,它抛出一个错误:

XML Parsing Error: junk after document element Line Number 20, Column 1

有什么问题?在codebeutify上进行现场演示:http://codebeautify.org/xmlviewer/848b20

回答

0

每个XML文件可能只包含一个根元素。你有两个:xs:schemadiffgr:diffgram。您应该将架构放在单独的xsd文件中,并在需要时引用它。