2017-01-13 3 views
0

HtmlNode.ElementsFlags["div"]CanOverlapとすることができ、同時にClosedである必要がありますか?HtmlAgilityPack - 同時にCanOverlapとClosedを保証する

は、私は、このHTML(右カルコゲノフルバレン骨格)を持つ:

<p> 
    <div> 
     <b>text:</b> 
     <img alt="" src="#" style="BORDER: 0px solid; "> 
    </div> 
    <div> 
     <b>text:</b> 
     <div></div> 
     <div></div> 
     <p>text</p> 
    </div> 
</p> 

をそして私はすべてのタグが正しくopennedと閉じて、私はそれを行うためにHtmlAgilityPackを使用していていることを確認する必要があります。しかし、CanOverlapと仮定していないので、HtmlAgilityPackは私のHTMLを変更しています。 HtmlAgilityPack(間違ったカルコゲノフルバレン骨格)によって返さ

HTML:

<p> 
    <div> 
     <b>text:</b> 
     <img alt="" src="#" style="BORDER: 0px solid; " /> 
    </div> 
    <div /> 
    <b>text:</b> 
    <div /> 
    <div> 
     <p> 
      text 
     </p> 
    </div> 
</p> 

どのように私はこの問題を解決することができますか? HtmlAgilityPackタグCanOverlapと、タグがClosedであることを確認するにはどうすればよいですか?

C#コード

if (!HtmlNode.ElementsFlags.ContainsKey("p")) 
    HtmlNode.ElementsFlags.Add("p", HtmlElementFlag.Closed); 
else 
    HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed; 

if (!HtmlNode.ElementsFlags.ContainsKey("span")) 
    HtmlNode.ElementsFlags.Add("span", HtmlElementFlag.Closed); 
else 
    HtmlNode.ElementsFlags["span"] = HtmlElementFlag.Closed; 

if (!HtmlNode.ElementsFlags.ContainsKey("div")) 
    HtmlNode.ElementsFlags.Add("div", HtmlElementFlag.Closed); 
else 
    HtmlNode.ElementsFlags["div"] = HtmlElementFlag.Closed; 

var htmlDoc = new HtmlDocument(); 
htmlDoc.OptionFixNestedTags = true; 
htmlDoc.OptionWriteEmptyNodes = true; 
htmlDoc.LoadHtml(myHtml); 

var htmlError = htmlDoc.ParseErrors.SafeAny(); 

if (!htmlError) 
    myHtml = htmlDoc.DocumentNode.InnerHtml; 

答えて

0

を解決! は、ClosedCanOverlapのようになります。

if (!HtmlNode.ElementsFlags.ContainsKey("div")) 
    HtmlNode.ElementsFlags.Add("div", HtmlElementFlag.CanOverlap & HtmlElementFlag.Closed); 
else 
    HtmlNode.ElementsFlags["div"] = HtmlElementFlag.CanOverlap & HtmlElementFlag.Closed; 
関連する問題