我正在使用第三方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) 我将如何从XmlDocument实例中删除所有注释标记?
有没有比检索XmlNodeList更好的方法并迭代这些?
XmlNodeList list = xmlDoc.SelectNodes("//comment()");
foreach(XmlNode node in list)
{
node.ParentNode.RemoveChild(node);
}
Run Code Online (Sandbox Code Playgroud) 根级别的数据无效.第1行,第1位 - 为什么我在加载xml文件时出现此错误
我的代码:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.LoadXml("file.xml");
Run Code Online (Sandbox Code Playgroud) 我刚遇到一个问题XmlDocument.LoadXml.
应用程序崩溃,出现以下错误:
"根级别的数据无效.第1行,第1位"
在检查了XML并发现它没有任何问题之后,我搜索了一下,发现了一个使用的提示XmlDocument.Load而不是XmlDocument.LoadXml.
我已经尝试过了,它完美无缺.
我的问题是:两种方法之间有什么区别,哪些可能导致一种工作而另一种方法失败?
请考虑以下简单代码,该代码创建XML文档并显示它.
XmlDocument xml = new XmlDocument();
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
XmlComment comment = xml.CreateComment("Comment");
root.AppendChild(comment);
textBox1.Text = xml.OuterXml;
Run Code Online (Sandbox Code Playgroud)
它按预期显示:
<root><!--Comment--></root>
Run Code Online (Sandbox Code Playgroud)
但是,它没有显示
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
那我怎么能这样呢?
我继承了一个编写得很糟糕的Web应用程序,当它试图读入存储在数据库中的"&"中的xml文档时似乎有错误.例如,将有一个包含内容的标签:"预付费和费用".是否有一些秘密简单的事情可以让它解析那个角色没有错误,或者我错过了一些明显的东西?
编辑:是否有任何其他字符会导致相同类型的解析器错误,因为格式不正确?
我需要创建一个XmlDocument包含多个名称空间的根元素.我使用的是C#2.0或3.0
这是我的代码:
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("JOBS", "http://www.example.com");
doc.AppendChild(root);
XmlElement job = doc.CreateElement("JOB", "http://www.example.com");
root.AppendChild(job);
XmlElement docInputs = doc.CreateElement("JOB", "DOCINPUTS", "http://www.example.com");
job.AppendChild(docInputs);
XmlElement docInput = doc.CreateElement("JOB", "DOCINPUT", "http://www.example.com");
docInputs.AppendChild(docInput);
XmlElement docOutput = doc.CreateElement("JOB", "DOCOUTPUT", "http://www.example.com");
docOutputs.AppendChild(docOutput);
Run Code Online (Sandbox Code Playgroud)
目前的输出:
<JOBS xmlns="http://www.example.com">
<JOB>
<JOB:DOCINPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
但是,我想要的输出是:
<JOBS xmlns:JOBS="http://www.example.com" xmlns:JOB="http://www.example.com">
<JOB>
<JOB:DOCINPUTS>
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS>
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
我的问题:我如何创建一个XmlDocument包含多个名称空间的根元素?
我正在寻找可以构造使用命名空间的XML文档的示例Java代码.我似乎无法使用我喜欢的常用工具找到任何东西,所以希望有人可以帮助我.
现在,我意识到此前提出过这类问题(特别是这个 - 我认为这是对两个对象的非常好的描述).我的问题更多是围绕表现.我有几个XML文档,大小超过100 - 300 K. 我注意到将这些信息加载到一个XDocument而不是一个XmlDocument对象时会有一些延迟.这两个对象之间是否存在严重的性能差异?他们是否以不同方式访问XML的内容?使用XML字符串时,这是首选的,或者是有区别的.这些对象的最终用途是XPath在有问题的对象上运行查询(或LINQ,取决于).
同样,这主要是性能问题,涉及内存和速度.
如何删除一个的所有子节点XmlElement,但保留所有属性?
请注意,XmlElement.RemoveAll还会删除所有属性.什么是干净,优雅和良好的删除所有子节点的方法?换句话说,这里最好的做法是什么?
xmldocument ×10
.net ×7
c# ×6
xml ×6
namespaces ×2
asp.net ×1
java ×1
linq-to-xml ×1
performance ×1
xmldom ×1
xmlreader ×1
xom ×1