Пустое использование пространства имен Linq Xml

Документация описывает, как получить URL-адрес для загрузки файла в облачном хранилище.

Если у вас уже есть инфраструктура загрузки, основанная на URL-адресах, или вы просто хотите поделиться URL-адресом, вы можете получить URL-адрес загрузки для файла, вызвав метод getDownloadUrl () для ссылки на хранилище.

storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener() {
    @Override
    public void onSuccess(Uri uri) {
        // Got the download URL for 'users/me/profile.png'
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});
blockquote>

32
задан peterorum 14 September 2008 в 03:03
поделиться

3 ответа

"Более корректный путь" был бы:

XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"),
new XElement(ns + "urlset",
new XElement(ns + "url",
    new XElement(ns + "loc", "http://www.example.com/page"),
    new XElement(ns + "lastmod", "2008-09-14"))));

То же как Ваш код, но с "не уточнено +" перед каждым именем элемента, которое должно быть в пространстве имен карты сайта. Достаточно умно не поместить любые ненужные объявления пространства имен в получающийся XML, таким образом, результат:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/page</loc>
    <lastmod>2008-09-14</lastmod>
  </url>
</urlset>

, который является, если я не ошибаюсь, что Вы хотите.

43
ответ дан 27 November 2019 в 20:56
поделиться

Я наткнулся на этот пост, имея дело с аналогичной проблемой в VB.NET. Я использовал литералы XML, и мне потребовались некоторые поиски, чтобы выяснить, как заставить это решение работать с конструкцией литерала XML, а не только с функциональной конструкцией.

Решение состоит в том, чтобы импортировать пространство имен XML вверху файла.

Imports <xmlns:ns="x-schema:tsSchema.xml">

И затем префикс всех моих литералов XML в выражении запроса с импортированным пространством имен. Это удаляет пустое пространство имен, которое появлялось на элементах, когда я сохранял свой вывод.

Dim output As XDocument = <?xml version="1.0" encoding="utf-8"?>
                              <XML ID="Microsoft Search Thesaurus">
                                  <thesaurus xmlns="x-schema:tsSchema.xml">
                                      <diacritics_sensitive>0</diacritics_sensitive>
                                      <%= From tg In termGroups _
                                          Select <ns:expansion>
                                                     <%= From t In tg _
                                                         Select <ns:sub><%= t %></ns:sub> %>
                                                 </ns:expansion> %>
                                  </thesaurus>
                              </XML>

    output.Save("C:\thesaurus.xml")

Надеюсь, это кому-нибудь поможет. Несмотря на такие неровности на дороге, API XLinq чертовски крут.

4
ответ дан 27 November 2019 в 20:56
поделиться

Если один элемент использует пространство имен, они все должны использовать тот. В случае, если Вы не определяете тот самостоятельно, платформа добавит пустое пространство имен, как Вы заметили. И, к сожалению, нет никакого переключателя или чего-то подобного для подавления этой "функции".

Так, кажется, нет никакого лучшего метода для разделения его. Использование Замена (" xmlns = \"\"", "") могло быть немного быстрее, чем выполнение RegEx.

2
ответ дан 27 November 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: