2012-11-29 34 views
0

有一些不好的XML,如:的XmlDocument加載XML,而不用驗證

NaN</td><td id="DemTechLimit8">NaN</td><td id="DemCommercLimit8">NaN</td><td id="AoValue8">NaN</td></tr><tr><td id="DemInt9">8:00 - 9:00 
</td><td id="DemValue9">1</td><td id="DemValueDeclined9">NaN</td><td id="CalcValue9">NaN</td><td id="LoadLoss9">NaN</td><td id="DemTechLimit9">NaN</td><td id="DemCommercLimit9">NaN</td><td id="AoValue9">NaN</td></tr><tr><td id="DemInt10">9:00 - 10:00 
</td><td id="DemValue10">1</td><td id="DemValueDeclined10">NaN</td><td id="CalcValue10">NaN</td><td id="LoadLoss10">NaN</td><td id="DemTechLimit10 

我如何可以加載到XmlDocument的,沒有任何確認或DTD?

這是數字簽名的目的,所以我不能替換特殊字符或格式。

這裏是例如在JS,但我需要.NET代碼:

xmldoce.async = false; 
xmldoce.validateOnParse = false; 
xmldoce.preserveWhiteSpace = false; 
xmldoce.resolveExternals = false; 
xmldoce.loadXML(...); 

編輯:

我需要加載的內容爲對象,由模式定義:

<complexType name="ObjectType" mixed="true"> 
<sequence minOccurs="0" maxOccurs="unbounded"> 
<any namespace="##any" processContents="lax"/> 
</sequence> 
</complexType> 

也許這可能與你XmlDocument?

+0

如果沒有有效的XML,它不會,直到你清理裝入'XmlDocument'。即使[HtmlAgilityPack](http://htmlagilitypack.codeplex.com/)在這裏也會遇到困難。 – StuartLC

回答

1

它不是一個XML。它似乎是一個HTML。你可以把它作爲

var html = HttpUtility.HtmlDecode(input); 

解碼,並最有可能你需要HtmlAgilityPack解析它。

下面的例子從字符串中提取一些有用的東西

var html = HttpUtility.HtmlDecode(input); 
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 
var result = doc.DocumentNode.Descendants("tr") 
       .Select(tr=>tr.Descendants("td").Select(td => td.InnerText).ToList()) 
       .ToList();