2013-12-24 1 views
3

Я не в состоянии загрузить XML, который имеет двоеточие в имени атрибута, я использую ExtJS-4.2.1как избежать двоеточие (:) в XML для XML чтения в ExtJS 4

мой образец XML

<RDF> 
    <Seq about="urn:productManagement:root" type="ROOT" ac:maxLevels="25"> 
     <li> 
      <Description ac:name="name1" ac:type="type1"/> 
     </li> 
    </Seq> 
</RDF> 

модель выше XML

Ext.define('TR.model.TreeControlModel', { 
    extend: 'Ext.data.Model', 
     fields: [ 
      { name: 'about', mapping:'@about'}, 
      { name: 'type', mapping:'li>[email protected]:type'}, 
      { name: "name", mapping:'li>[email protected]:name'} 
     ] 
}); 

Я попытался заменить: с | (труба), но это не сработало для меня. Нужна помощь.

ответ

3

Colon является зарезервированным символом в XML-идентификаторах и может использоваться только для привязки пространств имен XML. Невозможно избежать этого для других целей. You MAY сможет найти реализацию XML-представлений перед именами, которая не проверяет это, и позволяет вам избежать злоупотребления символом двоеточия, но ваши документы не будут взаимодействовать с любым другим кодом, обрабатывающим XML.

Смотрите примечание в http://www.w3.org/TR/REC-xml/#sec-common-syn и http://www.w3.org/TR/REC-xml-names/

Используйте другой символ, или правильно объявить ас: префикс пространства имен.

1

Это вопрос с EXTJS, вам нужно определить пространство имен в XML.

В этом примере

<RDF xmlns:ac="http://my.example.com/ac"> 
    <Seq about="urn:productManagement:root" type="ROOT" ac:maxLevels="25"> 
     <li> 
      <Description ac:name="name1" ac:type="type1"/> 
     </li> 
    </Seq> 
</RDF> 

где я поставил http://my.example.com/ac как определение префикса, как я не уверен, что это должно быть в вашем примере (вы сделали это сами или это из другой системы?) , Затем EXTJS 4 (не 3 или ниже) допускает использование | поэтому это должно работать:

Ext.define('TR.model.TreeControlModel', { 
extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'about', mapping:'@about'}, 
     { name: 'type', mapping:'li>[email protected]|type'}, 
     { name: "name", mapping:'li>[email protected]|name'} 
    ] 

});

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