none
XmlDataDocument的Load()和LoadXml()方法加载xml数据后,元素中的值(值为空格)不见了。 RRS feed

  • 问题

  • private void Test(string schema)
     {
      string data = "book.xml";
      XmlDataDocument documt = new XmlDataDocument();
      documt.DataSet.ReadXmlSchema(new StringReader(schema));
      documt.Load(data);
      documt.DataSet.AcceptChanges();
     }
    
    
    /* book.xml
    <!--sample XML fragment-->
    <book genre='novel' ISBN='1-861003-78' misc='sale-item'>
     <title> </title>
     <price>14.95</price>
    </book>
    */
    

    注意<title> </title>中间是空格,但是执行完Test()方法后DataSet中空格没有了,请问大侠们该如何解决???

    ----------------------------------------------------------------------------------------------------------------------------------

    非常感谢大家。设置属性PreserveWhitespace为true后,xml中的空格保留了,但是DataSet中还是没有空格。下面是新的测试代码:

    public DataSet GetDataSet2()
        {
          string schemaFileName = "Table1Schema.xsd";
          string dataFileName = "Table1Data.xml";
          XmlDataDocument document = new XmlDataDocument();
          document.PreserveWhitespace = true; // 是否在元素内容中保留空白
          document.DataSet.ReadXmlSchema(schemaFileName);
          document.Load(dataFileName);
          document.DataSet.AcceptChanges();
    
          return document.DataSet;
        }
    
    // Table1Data.xml
    /* 
    <?xml version="1.0" encoding="UTF-8"?>
    <Table1List>
    	<Table1>
    		<DictID>a</DictID>
    		<DictCode>  </DictCode>
    	</Table1>
    </Table1List>
    */
    
    // Table1Schema.xsd
    /*
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    	<xs:element name="Table1List">
    		<xs:complexType>
    			<xs:sequence minOccurs="0" maxOccurs="unbounded">
    				<xs:element name="Table1">
    					<xs:complexType>
    						<xs:sequence minOccurs="1" maxOccurs="1">
    							<xs:element default="" name="DictID" type="xs:string">
    								<xs:annotation>
    									<xs:documentation>字典内码</xs:documentation>
    								</xs:annotation>
    							</xs:element>
    							<xs:element default="1" name="DictCode" type="xs:string">
    								<xs:annotation>
    									<xs:documentation>字典编号</xs:documentation>
    								</xs:annotation>
    							</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    
    */
    
    调用GetDataSet2()方法,结果是document.InnerXml中的数据中包含空格,但是document.DataSet中不包含空格。请大侠们指教指教。

    2010年7月26日 7:02

答案

全部回复