Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net XML输出不正确_Asp.net_Xml_Vb.net - Fatal编程技术网

Asp.net XML输出不正确

Asp.net XML输出不正确,asp.net,xml,vb.net,Asp.net,Xml,Vb.net,我有一个用VB.NET和ASP.NET编写的表单,它将用户数据写入XML文件。每次使用表单时,都会生成一个新的XML文件,其中包含通过表单提供的数据。我的问题是,我试图使XML输出类似于: <PersonalData> <products> <product> <productID>1</productID> <productNumber>123456</productNumber&

我有一个用VB.NET和ASP.NET编写的表单,它将用户数据写入XML文件。每次使用表单时,都会生成一个新的XML文件,其中包含通过表单提供的数据。我的问题是,我试图使XML输出类似于:

<PersonalData>
  <products>
    <product>
      <productID>1</productID>
      <productNumber>123456</productNumber>
    </product>
 </products>
  <customers>
     <customer>
        <LastName>Winchester</LastName>
        <FirstName>Sam</FirstName>
        <Address>1234 Elm RD</Address>
        <City>San Antonio</City>
        <State>Texas</State>
        <ZipCode>76345</ZipCode>
      </customer>
   </customers>
</PersonalData>

我在这里做错了什么?

在完成产品编号的end元素后,您将需要再调用end元素两次

Public Sub-Write_XML(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)
将textWriter设置为新的XmlTextWriter(Server.MapPath(“xml/PersonDataVI.xml”),无任何内容)
textWriter.Formatting=System.Xml.Formatting.Indented
'启动新文档
textWriter.WriteStartDocument()
写一篇评论
textWriter.WriteComment(“这是一条评论”)
'插入开始元素-根元素节点
textWriter.WriteStarteElement(“个人数据”)
'写入起始元素
textWriter.WriteStarteElement(“产品”)
'写入子开始元素
textWriter.WriteStarteElement(“产品”)
'写入ProductID元素和数据
textWriter.WriteStarteElement(“productID”和“”)
textWriter.WriteString(txtProductID.Text)
textWriter.WriteEndElement()
'写入ProductID元素和数据
textWriter.WriteStarteElement(“productNumber”和“”)
textWriter.WriteString(txtProductNum.Text)
textWriter.WriteEndElement()
textWriter.WriteEndElement()
textWriter.WriteEndElement()
'编写子元素
textWriter.WriteStarteElement(“客户”)
'编写子元素
textWriter.WriteStarteElement(“客户”)
'写入LastName元素和数据
textWriter.WriteStarteElement(“LastName”和“”)
textWriter.WriteString(txtLastName.Text)
textWriter.WriteEndElement()
'写入FirstName元素和数据
textWriter.WriteStarteElement(“FirstName”和“”)
textWriter.WriteString(txtFirstName.Text)
textWriter.WriteEndElement()
'写入地址元素和数据
textWriter.WriteStarteElement(“地址”,“”)
textWriter.WriteString(txtAddress.Text)
textWriter.WriteEndElement()
'写入城市元素和数据
textWriter.WriteStarteElement(“城市”,“城市”)
textWriter.WriteString(txtCity.Text)
textWriter.WriteEndElement()
'写入状态元素和数据
textWriter.WriteStarteElement(“状态”,“状态”)
textWriter.WriteString(txtState.Text)
textWriter.WriteEndElement()
'写入ZipCode元素和数据
textWriter.WriteStarteElement(“ZipCode”和“”)
textWriter.WriteString(txtZipCode.Text)
textWriter.WriteEndElement()
"结束一切!
textWriter.WriteEndDocument()
“清理
textWriter.Flush()
textWriter.Close()
'显示XML文档
重定向(Server.MapPath(“xml/PersonDataVI.xml”))
端接头

您缺少
产品
产品
写删除

之后

textWriter.WriteStarteElement(“productNumber”和“”)
textWriter.WriteString(txtProductNum.Text)
textWriter.WriteEndElement()
你还需要两个

textWriter.WriteEndElement()

<代码> > p>如果您使用的是VB 9或更大,请考虑使用LINQ to XML,而不是显式写入器。有了它,您可以简单地执行以下操作:

Dim myData = <PersonalData>
  <products>
    <product>
      <productID>1</productID>
      <productNumber>123456</productNumber>
    </product>
 </products>
  <customers>
     <customer>
        <LastName>Winchester</LastName>
        <FirstName>Sam</FirstName>
        <Address>1234 Elm RD</Address>
        <City>San Antonio</City>
        <State>Texas</State>
        <ZipCode>76345</ZipCode>
      </customer>
   </customers>
</PersonalData>
Dim myData=
1.
123456
温彻斯特
山姆
榆树路1234号
圣安东尼奥
得克萨斯州
76345
要插入值,只需像在ASP.Net中那样对其进行转义:

<productID><% myProduct.ID %></productID>


FYI,您不应该使用
new XmlTextReader()
new XmlTextWriter()
。自.NET 2.0以来,它们一直被弃用。使用
XmlReader.Create()
XmlWriter.Create()
,将其视为HTML。每个开始标签都需要一个结束标签。WriteEndElement是结束标记。
<productID><% myProduct.ID %></productID>