2015-05-20 3 views
0

Я пытаюсь отредактировать ссылку сущности в XML-файле с Java.Редактирование ссылки XML-объекта с помощью java

Фактически, исходная ссылка - это интернет-ссылка, и я хотел бы преобразовать ее в локальную ссылку, когда документ обрабатывается. Кстати, я загружу контент, который мы можем получить по этой ссылке.

Это оригинальный вид ссылки:

<!ENTITY % ISOEntities PUBLIC "ISO 8879-1986//ENTITIES ISO Character Entities 20030531//EN//XML" "http://www.website.com/category/xml_schema/ISOEntities"> 

Это результат я хотел бы иметь

<!ENTITY % ISOEntities PUBLIC "ISO 8879-1986//ENTITIES ISO Character Entities 20030531//EN//XML" "C:\data\xml\entities\ISOEntities"> 

Так что я хотел бы сделать здесь, в основном, когда исходная ссылка я хотел бы импортировать данные ISOEntities из локальной ссылки (а не в интернет-ссылку), но без изменения исходной ссылки (я не буду писать в файл, чтобы изменить ссылку).

Как я могу это сделать? Спасибо за помощь!

ответ

2

Соответствующий способ зависит от того, какую библиотеку XML вы используете для анализа данных, но основная идея заключается в подключении некоторой конфигурации к вашему парсеру, который перехватывает запросы на загрузку определенного объекта и перенаправляет их в локальную кешированную копию , Для парсеров SAX и DOM в javax.xml.parsers это означает EntityResolver:

EntityResolver resolver = new EntityResolver() { 
    public InputSource resolveEntity(String publicId, String systemId) { 
    if("ISO 8879-1986//ENTITIES ISO Character Entities 20030531//EN//XML".equals(publicId)) { 
     return new InputSource("file:/C:/data/xml/entities/ISOEntities"); 
    } else { 
     return null; // use the default resolution logic 
    } 
    } 
}; 

Вы можете передать, что разрешения сущности к XMLReader (для SAX) или DocumentBuilder (для DOM), и она будет загружать объекты ISO из вашей локальной копия. Тот же механизм будет работать для любой другой библиотеки XML, которая использует SAX или DOM для внутреннего разбора (например, JDOM, Dom4J, XOM, ...), если вы можете передать подходящую конфигурацию XMLReader с помощью настраиваемого распознавателя сущности.

+0

Большое спасибо! Я попробую тогда обратную связь! –

Смежные вопросы