【发布时间】:2009-02-02 20:55:16
【问题描述】:
我正在创建一个 XML 文档,我想将 URL 存储在一个节点内,如下所示:
<ns:url>http://example.com</ns:ulr>
我的问题是,我是否需要对 URL 进行编码/转义?
如果我这样做了,.Net XmlDocument 对象会为我处理这个吗?
【问题讨论】:
我正在创建一个 XML 文档,我想将 URL 存储在一个节点内,如下所示:
<ns:url>http://example.com</ns:ulr>
我的问题是,我是否需要对 URL 进行编码/转义?
如果我这样做了,.Net XmlDocument 对象会为我处理这个吗?
【问题讨论】:
一般来说,大多数 DOM 实现(包括 XmlDocument)应该默认处理任何必要的文本内容转义。
【讨论】:
DOM/XmlWriter/无论你使用什么都应该为你处理。一个小问题:您可能会发现使用 XDocument 更容易(如果您有 3.5) - 命名空间的使用要简单得多(IMO):
XNamespace ns = "http://consoso/foobar";
XDocument doc = new XDocument(
new XElement("Foo",
new XAttribute(XNamespace.Xmlns + "ns", ns), // alias
new XElement("Bar", "abc"),
new XElement(ns + "url", "http://foo/bar")
)
);
string s = doc.ToString();
创建:
<Foo xmlns:ns="http://consoso/foobar">
<Bar>abc</Bar>
<ns:url>http://foo/bar</ns:url>
</Foo>
【讨论】:
我怀疑总体上是否需要逃避它。但是,您可能有一些应用程序级别的要求来执行此操作。
您应该绝对将 URL 编码为 XML 文本(例如,它不应包含 >)。
澄清:这并不意味着您应该将编码文本传递给 DOM 实现。我知道的所有 XML API 都可以为您做到这一点;因此,对于所有实际情况,您都不需要手动操作。我只是说应该完成。
【讨论】: