我正在以编程方式创建XML文件。要创建起始标记,我有代码:
Dim XDoc As XDocument = <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Customers></Customers>
然后循环遍历数据,使用Root.Add方法添加所需的元素。 XML成功显示在浏览器中。
Xdoc.Root.Add(<customer>
<fields>
</customer>
当某些客户端连接到此XML数据时,如果没有要检索的数据,则页面显示为:
<?xml version="1.0"?>
<Customers/>
从.NET项目中读取XML URL时:
Dim Xdoc As XDocument = XDocument.Load(UrlToXmlFile)
必须在抛出文档根元素之前定义错误“ DTD”。
虽然我可以捕获错误,但我想也许我在创建XML时可能做错了(XML不是我的强项)。
有些网站建议添加DTD(例如<!DOCTYPE note SYSTEM "Note.dtd">
)。我不知道这是否正确,或者我是否可以忽略错误或者是否有更好的方法来声明这个错误?
更新:当我直接在Chrome中查看该页面时,它会将XML显示为
<Customers>
<customer>....</customer>
<customer>....</customer>
</Customers>
IE中的显示为
<?xml version="1.0"?>
<Customers>
<customer>....</customer>
<customer>....</customer>
</Customers>
但是当我查看“查看来源”时,在两个浏览器中都会显示
<Customers>
<customer>....</customer>
<customer>....</customer>
</Customers>
我不知道这会是个问题吗?
更新2
XDoc.Save(Sr)
Response.Clear()
Response.Buffer = True
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = "application/xml"
Response.Write(Sr.GetStringBuilder.ToString)
Response.Flush()
Response.End()
答案 0 :(得分:1)
以下示例显示了xml的生成/保存和加载,没有错误。
Dim XmlFile As String = "C:\\Temp\\TestData.xml"
Dim XDoc As XDocument = <?xml version="1.0" encoding="UTF-8"?><Customers></Customers>
For ForCount As Integer = 0 To 10
XDoc.Root.Add("<customer>Customer" & ForCount.ToString & "</customer>")
Next
XDoc.Save(XmlFile)
Dim XDocReader As XDocument = XDocument.Load(XmlFile)
听起来您可能正在使用网络服务。在提供数据时,使用fiddler验证您的Web服务未添加该属性。我不知道你是如何导出XML的。确保您不只是在XDoc上执行.ToSrting
,这只会生成内部XML。