【问题标题】:saving webbrowser url to xml and retriving将 Web 浏览器 url 保存到 xml 并检索
【发布时间】:2011-06-02 15:55:09
【问题描述】:

我正在尝试将我的网络浏览器控制器 URL 保存到一个 xml 文件,但我遇到了某些字符阻止保存的问题。

当我像这样打开一个简单的 URL 时:

www.saypeople.com

它成功保存,但是当我想像这样保存网页网址时:

http://scholar.google.com.pk/scholar?as_q=filetype:pdf +transistor+ AND&num=10&btnG=Search+Scholar&as_epq=&as_oq=unknown+unclear&as_eq=&as_occt=any&as_sauthors=+ &as_publication=+ &as_ylo=&as_yhi=&as_sdt=1.&as_sdtp=on&as_sdtf=&as_sdts=5&hl=en

保存失败。

我检查了很多东西,发现我的代码只有在 url 包含两个字符 &< 中的任何一个时才保存。

请帮帮我。

这是我的代码...

    public static DialogResult Show(string Title,  String url)
    {
        MsgBox = new addfav();
        MsgBox.textBox1.Text = Title;
        MsgBox.textBox2.Text = url;
        MsgBox.ShowDialog();
        return result;


    }
    const string dataxml = "data.xml";

    private void button1_Click(object sender, EventArgs e)
    {
       //textBox2.Text containing webpage url
       //textBox1.Text containing webpage title

        try
        {
            XmlTextReader reader = new XmlTextReader(dataxml);
            XmlDocument doc = new XmlDocument();
            doc.Load(reader);
            reader.Close();
            XmlNode currNode;

            XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
            docFrag.InnerXml = "<fav>" + "<Title>" + textBox1.Text + "</Title>" + "<url>"+  textBox2.Text + "</url>" + "</fav>";
            // insert the availability node into the document 
            currNode = doc.DocumentElement;
            currNode.InsertAfter(docFrag, currNode.LastChild);
            //save the output to a file 
            doc.Save(dataxml);
            this.DialogResult = DialogResult.OK;
            MessageBox.Show("Sucessfully Added"); 
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: {0}", ex.ToString());
            this.DialogResult = DialogResult.Cancel;
        } 


        MsgBox.Close();
    }

和 如何通过在 xml 中搜索特定标题来检索 url。

<fav>
<Title>hello</Title>
<url><![CDATA[http://scholar.google.com.pk/scholar?as_q=filetype:pdf +hello+ AND&num=10&btnG=Search+Scholar&as_epq=&as_oq=unknown+unclear&as_eq=&as_occt=any&as_sauthors=+ &as_publication=+ &as_ylo=&as_yhi=&as_sdt=1.&as_sdtp=on&as_sdtf=&as_sdts=5&hl=en]]></url>
</fav>
<fav>
<Title>toad</Title>
<url><![CDATA[http://www.sciencedaily.com/search/?keyword=toad+ AND unknown OR unclear]]></url>
</fav>

我想搜索并保存 toad 标题的 url 字符串...请帮帮我... 谢谢

【问题讨论】:

  • 如果你也发布你看到的异常会很好。

标签: c# xml webbrowser-control


【解决方案1】:

将 URL 包装在 CDATA 部分中,例如:

<![CDATA[THE URL CONTENT]]>

您的问题是由于您不能使用 & 和

编辑
您可以尝试以下方法:

XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
docFrag.InnerXml = "<fav>";
docFrag.InnerXml += String.Format("<Title>{0}</Title>", textBox1.Text);
docFrag.InnerXml += String.Format("<Url><![CDATA[{0}]]></Url>", textBox2.Text);
docFrag.InnerXml += "</fav>";

【讨论】:

  • 现在我有另一个问题.. 我想在 xml 中搜索标题并将其 url 存储到字符串。问题已详细编辑...谢谢
【解决方案2】:

你可以使用HttpUtility.HtmlEncode(url)

【讨论】:

    【解决方案3】:

    你的问题在这里:

    docFrag.InnerXml = "<fav>" + "<Title>" + textBox1.Text + "</Title>"
                       + "<url>"+  textBox2.Text + "</url>" + "</fav>";
    

    &lt;&gt;&amp; 导致您出现问题的是 XML 中的标记。 InnerXML 不会转义标记,并且这些字符会按原样写入,这将导致无效的 XML 片段。要添加 URL,请改用 InnerText。它转义了那些字符。

    【讨论】:

      【解决方案4】:

      要浏览 XML 文件,您必须使用此处所示的导航器。

      XPathDocument xpathDoc = new XPathDocument([location of the file]);
      XPathNavigator Navigator = xpathDoc.CreateNavigator();
      
      String url_nav = "fav/url/text()";
      XPathNodeIterator url_iterator = Navigator.Select(url_nav);
      
      String URL_value = url_iterator.Current.Value;
      
      url_iterator.MoveNext();
      

      如果文件嵌套太重,请进行 XML 序列化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-31
        • 2016-09-24
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        • 2013-02-01
        相关资源
        最近更新 更多