如何在ExtJs中添加XML属性?

如何在ExtJs中添加XML属性?,extjs,Extjs,我使用ExtJs创建了这个XML: <Entity><Fields><Field><value>1777</value></Field><id></id></Fields></Entity> 1777 使用Ext.data.writer.XmlView源代码 我的问题是-为了向其中一个字段添加XML属性,我需要做什么? 例如: 仅供参考,这是我用来在ExtJS中编写XML

我使用ExtJs创建了这个XML:

<Entity><Fields><Field><value>1777</value></Field><id></id></Fields></Entity>
1777
使用Ext.data.writer.XmlView源代码

我的问题是-为了向其中一个字段添加XML属性,我需要做什么? 例如:

name=“请求id”>

仅供参考,这是我用来在ExtJS中编写XML的代码:

   var proxy1 = new Ext.data.proxy.Rest({

        url : url,
        pageParam: undefined,
        limitParam: undefined,
        sortParam: undefined,
        startParam: undefined,
        noCache: false,
        appendId: false,        
        reader : {
            type : 'json',
            root : 'entities'
        },
        headers: {
            "Content-Type": "application/xml"
        },
        actionMethods: {
            read: "POST"
        },
        writer: {
            writeRecordId: false,
            type: 'xml',
            nameProperty: 'mapping',
            writeAllFields: true,
            documentRoot: "Entity",
            record: "Fields"
        }


    });

var model = Ext.define('Entity', {
    extend: 'Ext.data.Model',

    fields: [
     {name: 'Field', type: 'string'}

    ]
});

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    autoSync: true,
    proxy: proxy1,
    model: 'Entity',
    data : [
        {'Field': '<value>1777</value>' }
    ]



});
var proxy1=new Ext.data.proxy.Rest({
url:url,
pageParam:未定义,
limitParam:未定义,
排序图:未定义,
起始图:未定义,
诺卡奇:错,
appendId:false,
读者:{
键入:“json”,
根:“实体”
},
标题:{
“内容类型”:“应用程序/xml”
},
行动方法:{
读:“帖子”
},
作者:{
书面记录:错误,
键入:“xml”,
nameProperty:'映射',
writeAllFields:对,
documentRoot:“实体”,
记录:“字段”
}
});
var model=Ext.define('实体'{
扩展:“Ext.data.Model”,
字段:[
{name:'Field',type:'string'}
]
});
var store=Ext.create('Ext.data.store'{
自动加载:对,
自动同步:对,
代理:proxy1,
模型:“实体”,
数据:[
{'Field':'1777'}
]
});
看看,使用标准XML编写器似乎无法实现这一点。您必须扩展或覆盖其
writeRecord
方法

举个例子,你可以这样做:

Ext.define('AttributeAwareXmlWriter', {
    extend: 'Ext.data.writer.Xml'

    ,alias: 'writer.aaxml'

    ,writeRecords: function (request, data) {
        var me = this,
            xml = [],
            i = 0,
            len = data.length,
            root = me.documentRoot,
            record = me.record,
            recordAttributes = me.recordAttributes,
            needsRoot = data.length !== 1,
            item,
            key;

        // may not exist
        xml.push(me.header || '');

        if (!root && needsRoot) {
            root = me.defaultDocumentRoot;
        }

        if (root) {
            xml.push('<', root, '>');
        }

        for (; i < len; ++i) {
            item = data[i];
            xml.push('<', record);
            if (recordAttributes) {
                for (key in recordAttributes) {
                    xml.push(' ', key, '="', recordAttributes[key], '"');
                }
            }
            xml.push('>');
            for (key in item) {
                if (item.hasOwnProperty(key)) {
                    xml.push('<', key, '>', item[key], '</', key, '>');
                }
            }
            xml.push('</', record, '>');
        }

        if (root) {
            xml.push('</', root, '>');
        }

        request.xmlData = xml.join('');
        return request;
    }
});
现在看来,使用标准XML编写器似乎无法实现这一点。您必须扩展或覆盖其
writeRecord
方法

举个例子,你可以这样做:

Ext.define('AttributeAwareXmlWriter', {
    extend: 'Ext.data.writer.Xml'

    ,alias: 'writer.aaxml'

    ,writeRecords: function (request, data) {
        var me = this,
            xml = [],
            i = 0,
            len = data.length,
            root = me.documentRoot,
            record = me.record,
            recordAttributes = me.recordAttributes,
            needsRoot = data.length !== 1,
            item,
            key;

        // may not exist
        xml.push(me.header || '');

        if (!root && needsRoot) {
            root = me.defaultDocumentRoot;
        }

        if (root) {
            xml.push('<', root, '>');
        }

        for (; i < len; ++i) {
            item = data[i];
            xml.push('<', record);
            if (recordAttributes) {
                for (key in recordAttributes) {
                    xml.push(' ', key, '="', recordAttributes[key], '"');
                }
            }
            xml.push('>');
            for (key in item) {
                if (item.hasOwnProperty(key)) {
                    xml.push('<', key, '>', item[key], '</', key, '>');
                }
            }
            xml.push('</', record, '>');
        }

        if (root) {
            xml.push('</', root, '>');
        }

        request.xmlData = xml.join('');
        return request;
    }
});

谢谢它给我打印了一个XML属性!唯一不同的是属性打印在“字段”上,而不是“字段”上。但我用覆盖功能解决了这个问题。谢谢谢谢它给我打印了一个XML属性!唯一不同的是属性打印在“字段”上,而不是“字段”上。但我用覆盖功能解决了这个问题。谢谢