Как я должен обрабатывать URL-адреса внутри XML? - PullRequest
1 голос
/ 02 февраля 2009

Я создаю XML-документ и хочу сохранить URL-адреса внутри узла следующим образом:

<ns:url>http://example.com</ns:ulr>

У меня вопрос: нужно ли в любом случае кодировать / экранировать URL?

Если я это сделаю, будет ли объект .Net XmlDocument обрабатывать это для меня?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2009

Как правило, большинство реализаций DOM (включая XmlDocument) должны обрабатывать любое необходимое экранирование текстового содержимого по умолчанию.

1 голос
/ 03 февраля 2009

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>
0 голосов
/ 02 февраля 2009

Я сомневаюсь, что вообще будет необходимость избежать этого. Однако для этого может потребоваться некоторое требование уровня приложения.

Вы должны абсолютно закодировать URL как текст XML (например, он не должен содержать >).

Пояснение: Это не значит, что вы должны передать закодированный текст в реализацию DOM. Все известные мне XML API делают это для вас; поэтому для всех практических ситуаций вам не нужно делать это вручную. Я только что сказал, что это должно быть сделано .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...