2

HTMLファイルにコードを追加するプログラムを書いています

一連の indexof と loops を使用して、本質的に ""X (X は探している場所) を検索します。

これを行うにはもっと雄弁な方法があるかもしれないと思いました

誰にも提案はありますか。

現在の様子

<body onLoad="JavaScript:top.document.title='Abraham L Barbrow'; if (self == parent) document.getElementById('divFrameset').style.display='block';">

完了したらどのように見えるか


<body onLoad="JavaScript:top.document.title='Abraham L Barbrow'; if (self == parent) document.getElementById('divFrameset').style.display='block';">
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9xxxxxx-1");
pageTracker._trackPageview();
} catch(err) {}</script>
4

7 に答える 7

5

よくわかりませんが、これのことですか?

// Given an HTML document in "htmlDocument", and new content in "newContent"
string newHtmlDocument = htmlDocument.Replace("</body>", newContent+"</body>");

おそらく、私が c# を知らないことは明らかです...正規表現を使用して、「body」タグの大文字と小文字を区別しないようにすることをお勧めします。

于 2009-07-23T19:37:41.697 に答える
4

HtmlAgilityPackを使用して html を DOM に解析し、操作することをお勧めします。

于 2009-07-23T19:33:13.517 に答える
3
public string AddImageLink(string emailBody,string imagePath)
{
    try
    {
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(emailBody);

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//body");

    // get body using xpath query ("//body")
    // create the new node ..

    HtmlNodeCollection LinkNode = new HtmlNodeCollection(node);
    //

    HtmlNode linkNode = new HtmlNode(HtmlNodeType.Element,doc,0);
    linkNode.Name = "A";
    linkNode.Attributes.Add("href","www.splash-solutions.co.uk");


    HtmlNode imgNode = new HtmlNode(HtmlNodeType.Element,doc,1);
    imgNode.Name = "img";
    imgNode.Attributes.Add("src",imagePath);

    //appending the linknode with image node
    linkNode.AppendChild(imgNode);

    LinkNode.Append(linkNode);

    //appending LinkNode to the body of the html
    node.AppendChildren(LinkNode);


    StringWriter writer = new StringWriter();
    doc.Save(writer);
    emailBody = writer.ToString();
    return emailBody;
}
于 2010-02-17T15:21:40.467 に答える
2

HTML ファイルが有効な XHTML である場合は、常に XmlDocument クラスを使用して解釈できます。その後、 body要素を簡単に探して、それに子要素を追加できます。これにより、終了</body>タグの直前に要素が配置されます。

于 2009-07-23T19:36:44.117 に答える
1

タグの後に追加するサンプルコンテンツが正しいかどうかはわかりませんが、正しい場合は、次の2つの問題が発生します。

  1. Google Analyticsコードは、開始タグではなく、終了タグの直前に追加する必要があります。これにより、独自のコードをロードする前に、ロードを待つ必要がなくなります。
  2. 他のJavaScriptを追加する場合は、それを外部ファイルに追加して、代わりにその1つのonloadを実行してみませんか?

それがいくつかの助けになることを願っています:)

于 2009-07-23T20:01:33.333 に答える
1

Html Agility Pack の使用を検討することをお勧めします。

http://www.codeplex.com/htmlagilitypack

于 2009-07-23T19:34:28.240 に答える
0

これは私が得たものです

お気軽にご提案ください

 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Multiselect = true;
            OFD.Filter = "HTML Files (*.htm*)|*.HTM*|" +
          "All files (*.*)|*.*";

            if (OFD.ShowDialog() == DialogResult.OK)
            {
                foreach (string s in OFD.FileNames)
                {
                    Console.WriteLine(s);
                    AddAnalytics(s);
                }
                MessageBox.Show("done!");
            }
        }
        private void AddAnalytics(string filename)
        {

            string Htmlcode = "";
            using (StreamReader sr = new StreamReader(filename))
            {
                Htmlcode = sr.ReadToEnd();
            }
            if (!Htmlcode.Contains(textBox1.Text))
            {
                Htmlcode = Htmlcode.Replace("</body>", CreateCode(textBox1.Text) + "</body>");

                using (StreamWriter sw = new StreamWriter(filename))
                {
                    sw.Write(Htmlcode);
                }
            }
        }

        private string CreateCode(string Number)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine();
            sb.AppendLine("<script type=\"text/javascript\">");
            sb.AppendLine("var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : \"http://www.\");");
            sb.AppendLine("document.write(unescape(\"%3Cscript src='\" + gaJsHost + \"google-analytics.com/ga.js' ");
            sb.AppendLine("<//script>");
            sb.AppendLine("<script type=/\"text//javascript/\">");
            sb.AppendLine("try {");
            sb.AppendLine(string.Format("var pageTracker = _gat._getTracker(/\"{0}/\");", Number));///"UA-9909000-1"
            sb.AppendLine("pageTracker._trackPageview();");
            sb.AppendLine("} catch(err) {}<//script>");
            sb.AppendLine();
            return sb.ToString();
        }
    }
于 2009-07-23T20:36:09.833 に答える