Как получить доступ элементов документа с именами

В настоящее время Allmost каждого документа XML namspaces использовать по своему содержанию. Это предотвращает конфликт имен в случае, когда используется несколько типов документов. DOM предоставляет специальные методы для извлечения XML-элементов и atttributes их полные имена, т.е. с пространствами имен поставляется.

В DOM обработку имен работает на продавца URL. Пример ниже показывает пример использования имен:

Это пример XML с помощью пространства имен:

<?xml version="1.0"?>
<!DOCTYPE myns:purchase-order  [
<!ELEMENT myns:purchase-order (myns:purchased-by, myns:order-items)>
<!ATTLIST myns:purchase-order
myns:date   CDATA #REQUIRED
myns:number CDATA #REQUIRED
xmlns:myns  CDATA #REQUIRED
>
<!ELEMENT pmyns:purchased-by (myns:address)>
<!ATTLIST myns:purchased-by
myns:name CDATA #REQUIRED
>
<!ELEMENT myns:address (#PCDATA)>
<!ELEMENT myns:order-items (myns:item+)>
<!ELEMENT myns:item EMPTY>
<!ATTLIST myns:item
myns:code  CDATA #REQUIRED
myns:type  CDATA #REQUIRED
myns:label CDATA #REQUIRED
>
]>
<myns:purchase-order xmlns:myns="http://www.my-company.com"
myns:date="2005-10-31" myns:number="12345">
<myns:purchased-by myns:name="My name">
<myns:address>My address</myns:address>
</myns:purchased-by>
<myns:order-items>
<!--
here is an example of empty element
i.e. containing no nested elements
-->
<myns:item myns:code="687" myns:type="CD"
myns:label="Some music" />
<myns:item myns:code="129851" myns:type="DVD"
myns:label="Some video"/>
</myns:order-items>
</myns:purchase-order>

Это код Java виде имен:


import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;



import org.w3c.dom.Attr;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;



/**

 * This sample program using fully qualified names while

 * accessing the contents of DOM-document.

 */



public class Test {

  public static void main(String[] args) {

    try {

      // load the document from a file:

      DocumentBuilderFactory factory = 

        DocumentBuilderFactory.newInstance();

      factory.setNamespaceAware(true);

      factory.setValidating(true);



      DocumentBuilder loader = factory.newDocumentBuilder();

      Document document = loader.parse("sample.xml");



      // here is our vendor URL used in namepace-related functions:

      String docNS = "http://www.my-company.com";



      Element order = document.getDocumentElement();



      // here we get the attribute with namespace defined:

      Attr date = order.getAttributeNodeNS(docNS, "date");

      // .. do something ...



      // here we get the attribute with namespace defined:

      NodeList children = order.getElementsByTagNameNS(docNS, "item");

      // .. do something ...



    catch (Exception ex) {

      ex.printStackTrace();

    }

  }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>