繁体   English   中英

使用xml文档解析xml时出错

[英]error while parsing xml using xml document

使用xml文档解析Intranet站点的URL时遇到问题。 以下是一个简化的示例:

XML文件

<?xml version="1.0" encoding="utf-8" ?>
<Nodes>
  <Node>
    <Project>Test</Project>
    <Link>https://www.google.com/?gws_rd=ssl#q=&+fails+in+url</Link>
  </Node>
</Nodes>

当我尝试在我的C#代码中解析并加载上面的xml时,由于上面的代码中使用了“ ”,因此在“ Xdoc.load”处出现错误。 通常,我们可以通过使用“%26”代替&来解决此问题,但是在我的情况下,由于将“&”更改为“%26”会破坏URL,因此我无法做到。 即。 我认为“&”被用作查询字符串的一部分,删除&破坏了页面上的参数。

这可能不是有效的方法,但这是必需的。

protected void Page_Load(object sender, EventArgs e)
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(Server.MapPath("~/Content/XMLFile1.xml"));
            XmlNodeList lNodes = xdoc.SelectNodes("/Nodes/Node");

            foreach (XmlElement p in lNodes)
            {
                var m = p["Link"].InnerText;
                string s = "window.open('" + m + "', 'popup_window', 'width=300,height=100,left=100,top=100,resizable=yes');";
                //ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);
                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", s, true);

            }

        }

XML中有5个特殊字符: "&'<> 。任何出现在属性或元素值中的字符都会导致XML解析器中断。

由于您控制XML的生成,因此最好先修复XML,然后再尝试在应用程序中对其进行修改,然后再解析它。

<![CDATA[[]]>标签是执行此操作的好方法,用特殊字符等效的实体(例如&amp; 对于& 如果要处理的XML具有在值中带有特殊字符的属性,则必须使用字符实体,因为CDATA无法使用这些属性。

如果这是元素的值,则可以使用任何一种方法。

因此,使用上面发布的示例:

 <Link>https://www.google.com/?gws_rd=ssl#q=&+fails+in+url</Link>

会成为:

 <Link><![CDATA[https://www.google.com/?gws_rd=ssl#q=&+fails+in+url]]></Link>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM