[英]Loading and reading XML file fails on its processing instruction
我陷入了一个微妙的问题。 我尝试构建一个C#4.0控制台应用程序来读取XML文件。
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type='text/xsl' href='report.xsl' version='1.0'?>
...
<logs>
...
</logs>
这是我的代码:
...
var root = XDocument.Load(xmlStream);
IEnumerable<XElement> address =
from el in root.Descendants("formated-text")
select el;
...
这在Load方法中给出了以下错误:
':'字符,十六进制值0x3A,不能包含在名称中。 第2行,第6位。
将第二行的冒号更改为' - '可以解决错误... duh
我可以在我的代码中做什么来读取源XML而不必先替换'stupid'冒号?
谢谢!
它看起来像你只是有一个无效的XML文档。 结肠应该是连字符(根据W3C )。 我怀疑你是否能够使LINQ to XML解析一个无效的文档 - 你不应该尝试。 您应该修改文档。
冒号错了,你应该使用破折号
没有。 那个“愚蠢的冒号”在那个位置根本无效。
我发现这些“格式错误”的XML文件的起源可以追溯到1990年代中期......是的,今天这样一个旧系统仍然在使用,仍然会产生这种输出。 我可以在代码中使用解决方法。
感谢您花时间为这些XML元素提供了一些有用的线索。
我需要确认源XML的创建者在冒号时出错了。
我已经实施了一个计划B,直到我能说服一个非常大的部门(不是我的部门)来改变他们的申请......:o(
计划B是首先读取XML文件并替换所有'xml:'出现。 然后将此更正的文件提供给我的流程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.