У меня была эта проблема с SOA-системой, написанной на Java. Я работал как с клиентом, так и с сервером на разных физических машинах, и они отлично работали в течение длительного времени, затем эти неприятные сбрасывания соединений появились в журнале клиентов, и в журнале сервера не было ничего странного. Перезапуск клиента и сервера не помогло решить проблему. Наконец, мы обнаружили, что куча на стороне сервера была довольно полной, поэтому мы увеличили доступную память для JVM: проблема решена! Обратите внимание, что в журнале не было OutOfMemoryError: память была просто скудной, а не исчерпанной.
Он определяет пространство имен XML .
В вашем примере префикс пространства имен - « android », а URI пространства имен - « http://schemas.android.com / apk / res / android "
В документе вы видите такие элементы, как:
Считайте префикс пространства имен переменной с коротким псевдонимом для полного URI пространства имен. Это эквивалент записи
в отношении того, что «означает», когда синтаксический анализатор XML читает документ.
ПРИМЕЧАНИЕ: Вы не можете фактически использовать полный URI пространства имен вместо префикса пространства имен в документе экземпляра XML.
Ознакомьтесь с этим руководством по пространствам имен: http://www.sitepoint.com/xml-namespaces-explained/
У вас есть пространства имен, поэтому вы можете иметь глобально уникальные элементы. Однако в 99% случаев это на самом деле не имеет значения, но когда вы помещаете это в перспективу Семантическая сеть , это начинает становиться важным.
Например, вы можете создать XML-гибрид из различных схем, просто используя соответствующие xmlns
. Например, смешайте друга друга с помощью vCard и т. Д.
Это означает пространство имен XML .
По сути, каждый элемент (или атрибут) в XML принадлежит пространству имен, способ «определения "имя элемента.
Представьте, мы с вами изобретаем наш собственный XML. Вы изобретаете XML для описания людей, я изобретаю свой для описания городов. Мы оба включаем элемент под названием name
. Ваше относится к имени человека, а мое - к названию города - хорошо, это немного надумано.
<person>
<name>Rob</name>
<age>37</age>
<homecity>
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>
Если бы наши два XML были объединены в один документ, как бы мы могли различить эти два имени? Как вы можете видеть выше, есть два элемента name
, но оба они имеют разные значения.
Ответ заключается в том, что мы с вами назначим пространство имен нашему XML, которое мы сделаем уникальным:
<personxml:person xmlns:personxml="http://www.your.example.com/xml/person"
xmlns:cityxml="http://www.my.example.com/xml/cities">
<personxml:name>Rob</personxml:name>
<personxml:age>37</personxml:age>
<cityxml:homecity>
<cityxml:name>London</cityxml:name>
<cityxml:lat>123.000</cityxml:lat>
<cityxml:long>0.00</cityxml:long>
</cityxml:homecity>
</personxml:person>
Теперь мы полностью квалифицировали наш XML, нет никакой двусмысленности в том, что означает каждый элемент name
. Все теги, начинающиеся с personxml:
, принадлежат вашему XML, все те, которые начинаются с cityxml:
, принадлежат мне.
Следует отметить несколько моментов:
Если вы исключаете какие-либо объявления пространств имен, объекты считаются находящимися в пространстве имен по умолчанию.
Если вы объявляете пространство имен без идентификатора, то есть xmlns = "http: // somenamespace"
вместо xmlns: rob = "somenamespace"
он определяет пространство имен по умолчанию для документа.
Фактическое пространство имен, часто IRI , не имеет реального значения. Он должен быть уникальным, поэтому люди склонны выбирать принадлежащий им IRI / URI, но это не имеет большего значения, чем это. Иногда люди помещают схему (определение) для XML в указанный IRI, но это соглашение только некоторых людей.
Префикс также не имеет значения. Единственное, что имеет значение, - это пространство имен, в котором определен префикс. Несколько тегов, начинающихся с разных префиксов, каждый из которых отображается в одно и то же пространство имен, считаются одинаковыми.
Например, если префиксы personxml
и mycityxml
оба сопоставлены с то же пространство имен (как в приведенном ниже фрагменте), то не имеет значения, если вы добавите к данному элементу префикс personxml
или mycityxml
, они оба будут рассматриваться как одно и то же парсер XML. Дело в том, что синтаксический анализатор XML не заботится о том, что вы выбрали в качестве префикса, а только о пространстве имен, которое он отображает.
xmlns: personxml = "http://example.com/same/url"
xmlns: mycityxml = "http://example.com/same/url" />
Атрибуты могут быть уточнены, но обычно нет. Они также не наследуют свое пространство имен от элемента, в котором они находятся, в отличие от элементов (см. Ниже).
Кроме того, пространства имен элементов наследуются от родительского элемента. Другими словами, я мог бы записать приведенный выше XML как
<person xmlns="http://www.your.example.com/xml/person">
<name>Rob</name>
<age>37</age>
<homecity xmlns="http://www.my.example.com/xml/cities">
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>