我正在尝试解析WiX安装程序中的一些XML.XML将是从Web服务器返回的所有错误的对象.我使用以下代码在问题标题中收到错误:
XmlDocument xml = new XmlDocument();
try
{
xml.LoadXml(myString);
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"C:\text.txt", myString + "\r\n\r\n" + ex.Message);
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
myString是这个(如输出中所示text.txt)
<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>
Run Code Online (Sandbox Code Playgroud)
text.txt 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>
Data at the root level is invalid. Line 1, position 1.
Run Code Online (Sandbox Code Playgroud)
我需要解析这个XML,所以我可以看到我是否有任何错误.
编辑
这个问题不是标记的重复.在那个问题中,提出问题的人正在使用LoadXml解析XML文件.我正在解析一个字符串,这是正确使用的LoadXml
我已经阅读了类似的帖子,他们没有回答我的问题.
在C#中,我有一个我从WebClient.DownloadString获取的字符串.我已经尝试将client.Encoding设置为新的UTF8Encoding(false),但这没有任何区别 - 我仍然在结果字符串的开头以UTF-8的字节顺序标记结束.我需要删除它(用LINQ解析生成的XML),并希望在内存中这样做.
所以我有一个以\ x00EF\x00BB\x00BF开头的字符串,如果它存在,我想删除它.现在我正在使用
if (xml.StartsWith(ByteOrderMarkUtf8))
{
xml = xml.Remove(0, ByteOrderMarkUtf8.Length);
}
Run Code Online (Sandbox Code Playgroud)
但这感觉不对.我已尝试过各种带有流,GetBytes和编码的代码,但没有任何作用.任何人都可以提供"正确"算法从字符串中剥离BOM吗?
谢谢!
我正在使用第三方DLL,它通过互联网传输XML文档.
为什么DLL会抛出以下异常?
根级别的数据无效.第1行,第1位.(有关完整的异常文本,请参见下文.)
以下是XML文档的前几行:
<?xml version="1.0" encoding="utf-8"?> <REQUEST> <HEADER>
<REQUESTID>8a5f6d56-d56d-4b7b-b7bf-afcf89cd970d</REQUESTID>
<MESSAGETYPE>101</MESSAGETYPE>
<MESSAGEVERSION>3.0.2</MESSAGEVERSION>
Run Code Online (Sandbox Code Playgroud)
例外:
System.ApplicationException was caught
Message=Unexpected exception.
Source=FooSDK
StackTrace:
at FooSDK.RequestProcessor.Send(String SocketServerAddress, Int32 port)
at Foo.ExecuteRequest(Int32 messageID, IPayload payload, Provider prov)
at Foo.SendOrder(Int32 OrderNo)
InnerException: System.Xml.XmlException
LineNumber=1
LinePosition=1
Message=Data at the root level is invalid. Line 1, position 1.
Source=System.Xml
SourceUri=""
StackTrace:
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
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) …Run Code Online (Sandbox Code Playgroud)