Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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
C# 仅在C中的运行时使用Doctype语句生成XML文件时出错#_C#_Xml - Fatal编程技术网

C# 仅在C中的运行时使用Doctype语句生成XML文件时出错#

C# 仅在C中的运行时使用Doctype语句生成XML文件时出错#,c#,xml,C#,Xml,如下文所述,请求任何人帮助解决一个长期问题 我正在使用C#(VS2008)生成XML文件。环境是WindowsServer2003。为任何目的生成XML文件都不会有问题,除非我使用下面给出的特定Doctype: _fileHandler.FileHeader.Append("?xml version=\"1.0\" encoding=\"utf-8\"?"); _fileHandler.FileHeader.Append("!DOCTYPE tv SYSTEM \"xmltv.dtd\"");

如下文所述,请求任何人帮助解决一个长期问题

我正在使用C#(VS2008)生成XML文件。环境是WindowsServer2003。为任何目的生成XML文件都不会有问题,除非我使用下面给出的特定Doctype:

_fileHandler.FileHeader.Append("?xml version=\"1.0\" encoding=\"utf-8\"?");
_fileHandler.FileHeader.Append("!DOCTYPE tv SYSTEM \"xmltv.dtd\"");
_fileHandler.FileHeader.Append("tv");
(我在上面3行中省略了“”,否则代码不会显示。)

如果删除上面的第二行,即带有Doctype语句的行,则会成功生成文件。它甚至可以在调试模式下运行时成功生成(也在Prod环境中测试过)。但在运行时,相同的代码会给出如下错误:

Timestamp: 10/25/2010 4:08:50 PM :  Message: EPGExporterLite.Client.FileDirector.BeginProduction 
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
   at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
   at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlTextReaderImpl.OpenStream(Uri uri)
   at System.Xml.XmlTextReaderImpl.DtdParserProxy_PushExternalSubset(String systemId, String publicId)
   at System.Xml.XmlTextReaderImpl.DtdParserProxy.System.Xml.IDtdParserAdapter.PushExternalSubset(String systemId, String publicId)
   at System.Xml.DtdParser.ParseExternalSubset()
   at System.Xml.DtdParser.ParseInDocumentDtd(Boolean saveInternalSubset)
   at System.Xml.DtdParser.Parse(Boolean saveInternalSubset)
   at System.Xml.XmlTextReaderImpl.DtdParserProxy.Parse(Boolean saveInternalSubset)
   at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.LoadXml(String xml)
   at EPGExporterLite.Model.FileBuilder.WriteAllContentToFile() in E:\EPGExporterLite\SourceFiles\EPGExporterLite_ServiceApp\EPGExporterLiteSvc\Model\FileBuilder.cs:line 249
   at EPGExporterLite.Model.FileBuilder.Construct() in E:\EPGExporterLite\SourceFiles\EPGExporterLite_ServiceApp\EPGExporterLiteSvc\Model\FileBuilder.cs:line 120
   at EPGExporterLite.Client.FileDirector.BeginProduction(FormatRequestInfo pRequestInfo, FormatResultInfo pResultInfo) in E:\EPGExporterLite\SourceFiles\EPGExporterLite_ServiceApp\EPGExporterLiteSvc\BusinessLayer\FileDirector.cs:line 59  
如果需要进一步澄清,请告知我,并帮助我解决此问题

谢谢和问候,
森古普塔亚目

第一次更新我的原始查询 添加发生异常的代码的更多详细信息:

_fileHandler.XmlDoc = new XmlDocument();                
_fileHandler.XmlDoc.LoadXml(_fileHandler.FileHeader.ToString() +
                            _fileHandler.FileContent.ToString() +
                            _fileHandler.FileFooter.ToString());               
_fileHandler.XmlDoc.Save(_resultInfo.FileInfo.ToString());
_fileHandler.XmlDoc.Save(_resultInfo.FileInfo_Common.ToString());
如您所见,我正在一个stringbuilder对象中构建整个内容,然后使用上面的代码使用LoadXML写入XMLDoc。我想问题不在于写入文件,而在于将其读入XmlDocument。重申一下,这仅在添加DocType语句时发生,而不是在其他情况下,并且仅在运行时发生(调试服务时没有问题)

此代码是Windows服务的一部分。调试服务时不会引发异常,但仅当服务运行时才会引发异常

如果有任何更多的细节,我可以帮助你们,请告诉我

谢谢和问候,

Subhodip Sengupta

如果包含导致异常的代码和异常详细信息,您将得到更快的响应。仅仅一个堆栈跟踪几乎不可能提供太多帮助

我猜是因为你在你的电脑里用过这个系统
如果您不希望XML解析器验证您的XML,那么就不要包括如何将XML写入文件?您正在使用XmlTextWriter类吗?我没有使用XmlTextWriter类。整个内容构建在stringbuilder对象中,然后使用LoadXML方法写入XMLDoc。