从UI上输入的数据动态生成XML

时间:2010-06-25 10:28:54

标签: asp.net xml xml-serialization

我有一个xml文件,目前是手动制作的,我必须创建一个功能(UI),用户可以在其中输入数据,我必须存储数据并在.NET中动态生成xml文件。

问题是xml文件的格式。我无法决定如何存储该数据,然后从中动态生成xml。

请从下面的xml文件中找到代码的一些摘录:

<?xml version="1.0" encoding="UTF-8"?>
<DATA>
  <SDACTS>
    <SDACT TYPE="Economy" COLOUR="0xff0000"/>
    <SDACT TYPE="Environment" COLOUR="0x00ff00"/>
    <SDACT TYPE="People" COLOUR="0x0000ff"/>
    <SDACT TYPE="Society" COLOUR="0xff00ff"/>
  </SDACTS>
  <INDUSTRIES>
    <INDUSTRY TYPE="Platinum" COLOUR="0x0094B1">
      <PRODUCT>Platinum</PRODUCT>
      <PRODUCT>Palladium</PRODUCT>
      <PRODUCT>Rhodium</PRODUCT>
      <PRODUCT>Gold</PRODUCT>
    </INDUSTRY>
    <INDUSTRY TYPE="Diamonds" COLOUR="0x652382">
      <PRODUCT>Diamonds</PRODUCT>
    </INDUSTRY>
 <INDUSTRY TYPE="Metallurgical Coal" COLOUR="0x999a8f">
      <PRODUCT>Metallurgical Coal</PRODUCT>
    </INDUSTRY>
</INDUSTRIES>
  <LOCATIONS>
    <CONTINENT TITLE="South America">
      <COUNTRY TITLE="Brazil">
        <HEADOFFICE>So Paulo</HEADOFFICE>
        <ADDRESS>
         Sau, polo, ambikaui 
        </ADDRESS>
        <LATITUDE>-23.571157</LATITUDE>
        <LONGITUDE>-46.644146</LONGITUDE>
        <BUSINESSUNITS>Nickel; Iron ore and manganese</BUSINESSUNITS>
        <DESCRIPTION>Anglo American has been operating in Brazil since 1973. Our core operations are involved in the production of nickel, iron ore and maganese, while our interests in the production of phosphates and niobium at Copebras and Catalo respectively have been identified for divestment. Nickel projects in the pipeline include Barro Alto.</DESCRIPTION>
        <EMPLOYEES/>
        <NUMBEROFBUSINESS>2</NUMBEROFBUSINESS>
        <!--New project added - 12/02/2010  start -->
        <PROJECT>
          <TYPE>Greenfield</TYPE>

          <NAME>Minas Rio expansion</NAME>
          <UNITTYPE>Iron Ore and Manganese</UNITTYPE>
          <RELATEDOPERATION>Greenfield</RELATEDOPERATION>
          <LATITUDE>-18.92814</LATITUDE>
          <LONGITUDE>-43.42562</LONGITUDE>
          <STATUS>Future unapproved</STATUS>

          <DESCRIPTION/>
          <FULLPRODUCTIONDATE>TBD</FULLPRODUCTIONDATE>
          <PRODUCTIONVOLUME>Up to 53 Mtpa iron ore pellet feed (wet basis)</PRODUCTIONVOLUME>
          <!-- <ESTIMATEDCAPEX>TBD</ESTIMATEDCAPEX>-->
          <FOOTNOTES>
            <![CDATA[1. Capital expenditure shown on 100% basis in nominal terms. Platinum projects reflect approved capex.<br><br>2. Production volume represents 100% of average incremental or replacement production, at full production, unless otherwise stated.]]>
          </FOOTNOTES>
        </PROJECT>
        <SDACTIVITY>
          <ID>3.2.4.20</ID>

          <TYPE>Society</TYPE>
          <BUSINESS>Nickel</BUSINESS>
          <RELATEDOPERATION/>
          <HEADING>Listening - and acting - in Brazil</HEADING>
          <SUBHEADING>SEAT community engagement session in Brazil</SUBHEADING>
          <COPY>
            local government.
          </COPY>
          <IMAGE>3.2.4.20.jpg</IMAGE>
          <LINKCAPTION>Read more about SEAT in Brazil</LINKCAPTION>
          <LINKURL>http://www.angloamerican.co.uk/aa/development/case-studies/society/society01/</LINKURL>
        </SDACTIVITY>
 </COUNTRY>
   </CONTINENT>
  </LOCATIONS>
</DATA>

2 个答案:

答案 0 :(得分:0)

您可以直接将其存储在DOM中,并在需要时进行序列化。

答案 1 :(得分:0)

如果我是你,我只会将数据存储在数据库中,然后使用xmltexwriter将其写入到任何地方。

using (XmlTextWriter writer = new XmlTextWriter(OutputStream, Encoding.UTF8)) {
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("DATA");
writer.WriteStartElement("SDACTS");
foreach ( SDACT in SDACTs) {
    writer.WriteStartElement("SDACT");
    writer.WriteAttributeString("TYPE", SDACT.Type);
    writer.WriteAttributeString("COLOUR", SDACT.COLOUR);
    writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();

}

您还可以利用.nets XML序列化查看http://msdn.microsoft.com/en-us/library/ms950721.aspx