javaxml多个根元素_XML错误:有多个根元素
XML错误:有多个根元素
我从Web服务获取XML。 这是XML的样⼦:
Text Text Text Text etc.
这⾥是我的C#代码:
StringBuilder output = new StringBuilder(); // Create an XmlReader using (XmlReader reader = XmlReader.Create(new StringReader(xoResponse.@return))) { XmlWriterSettings ws = new XmlWriterSettings(); //ws.Indent = true; using
error parse new(XmlWriter writer = XmlWriter.Create(output, ws)) { // Parse the file and display each of the nodes. while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: writer.WriteStartElement(reader.Name); break; case
XmlNodeType.Text: writer.WriteString(reader.Value); break; case XmlNodeType.XmlDeclaration: case
XmlNodeType.ProcessingInstruction: writer.WriteProcessingInstruction(reader.Name, reader.Value); break; case XmlNodeType.Comment: writer.WriteComment(reader.Value); break; case XmlNodeType.EndElement:
writer.WriteFullEndElement(); break; } } } }
我相信这个错误是在第⼆个⽗元素上抛出的。 我怎样才能避免这个错误? 任何帮助是极⼤的赞赏。
因为XML⽂档只能有⼀个根节点,所以需要将您的元素包含在周围的元素中:
Text Text Text Text
当你从别的地⽅接收到这个标记时,你可能不得不⾃⼰创build标记,⽽是将其作为⼀个string处理,然后⽤适当的标签对其进⾏包装,然后
再尝试将其parsing为XML。
所以,你有⼏个select:
获取Web服务的提供者返回具有⼀个根节点的实际 XML
如上所述,预处理XML以添加根节点
预处理XML以将其分成多个块(即,每个节点⼀个),并将每个块作为不同的XML⽂档进⾏处理
您可以在不修改XMLstream的情况下执⾏此操作:告诉XmlReader不要太挑剔。 将XmlReaderSettings.ConformanceLevel设置为ConformanceLevel.Fragment将使parsing器忽略没有根节点的事实。
XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; using (XmlReader reader = XmlReader.Create(tr,settings)) { ... }
现在你可以parsing这样的东西(这是⼀个实时的XMLstream,不可能⽤⼀个节点来包装)。
1354902435238707382213549024353417d1300786a0000000bf9458b05180000000000000000000000000000000
将xml包装在另⼀个元素中
Text Text Text Text
如果你负责(或者对Web服务有任何控制),让他们添加⼀个独特的根元素!
如果你根本不能改变这个,那么你可以做⼀些正则expression式或者string分割来parsing每个元素,并将每个元素传递给你的XML Reader。
或者,您可以⼿动添加垃圾根元素,⽅法是在开始标记前添加⼀个结束标记。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。