English 中文(简体)
XML 例外:无效特性
原标题:
  • 时间:2009-05-12 19:06:51
  •  标签:

我正在开展一个小型项目,从长期应用中获取XML数据。 我正试图将这种扼制数据输入XDocument(System.Xml.Linq.XDocument),然后从那里提取一些XMLmag,并为一份数据报告制作一个Xlsx文档。

有时,我收到使XML特性无效的数据,在试图将扼制成<代码>X时,我发现这一错误。

[System.Xml.XmlException] Message: ? , hexadecimal value 0x1C, is an invalid character.

自2006年以来 我对遥远的申请没有控制权,你可以期望纽约有这样的特性。

我清楚地知道,XML有一种方式,可以将其特征列入其中,例如<代码>&#x1C。 或如此。

如果我完全愿意保留所有数据。 如果不是的话,那就不了。


我已经想到的是,如果出现例外的话,会追溯到并试图重新制定对策,但我尝试了几种方法,其中没有一个方法似乎成功。

感谢你的想法。

《刑法》是一条行文:

TextReader  tr;
XDocument  doc;

string           response; //XML string received from server. 
... 
tr = new StringReader (response);   

try
{
    doc = XDocument.Load(tr);
}
catch (XmlException e)
{
    //handle here?
}
最佳回答

XML只能处理任何性质的问题,但范围很广, 控制代码和这种,它赢得了t。

如果你能够让她们掌握自己的产出,那么你的最佳灯塔就是使你重新获得的原始数据具有活力。 你需要用你提到的特性参考格式取代非法性质。

(你甚至可以诉诸于《美洲贸易协定》,因为没有任何办法逃脱这些特征。)

问题回答

您可使用XmlReader,并设定XmlReaderSettings.CheckCharacters Property to false。 这将使你阅读XML文件,尽管其性质无效。 从那里可以进口到XmlDocument或XDocument物体。

可在我的blog上读到更多内容。

将数据输入System.Xml.Linq.XDocument 它将看一看这样的情况:

XDocument xDocument = null;
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };
using (XmlReader xmlReader = XmlReader.Create(filename, xmlReaderSettings))
{
    xmlReader.MoveToContent();
    xDocument = XDocument.Load(xmlReader);
}

详情见here

如果你的投入不是XML,那么你就应当使用Tidy或Tagsoup等东西来清理这些东西。

它们将做出任何贡献,希望能从中找到一个有用的OM。

我不知道如何打上相关的黑暗边图书馆。

Garbage In, Garbage Out. 如果遥远的申请寄给你停车场,那就给你们所有。 如果他们认为他们重新派XML,那么他们就需要固定。 在此情况下,你不再通过 around子工作来做任何好处。

你们也应当确保他们想回去的东西。 百分比1C对他们意味着什么? 他们想要的是什么?

IMHO的最佳解决办法是修改法典/program/whatever所生产的无效的XML,将其用于你的方案。 不幸的是,这并不总是可能的。 在这种情况下,在试图装上文件之前,你必须先从所有特性和带走。

如果你确实能够确定来源XML数据,则考虑采用我在TextReader子流(例如,加沙地带的TextReader),该子流层包含现有的文本Reader(tr)和废弃的特性。

其答案很晚,但可以帮助某人。 当你读或编订XML时,在XML之初可能具有1个隐性。 这并不像这种无形的特性。

因此,在阅读XML时,刚刚从第一个<代码><开始阅读。 性质:

var myXml = XDocument.Parse(loadedString.Substring(loadedString.IndexOf("<")));

这样做,而且只装上罚款。





相关问题
热门标签