Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

invalid attribute::model #267

Closed
Falways opened this issue Jan 22, 2021 · 5 comments
Closed

invalid attribute::model #267

Falways opened this issue Jan 22, 2021 · 5 comments

Comments

@Falways
Copy link

Falways commented Jan 22, 2021

I use new DOMParser().parseFromString(htmlData,'text/html') , to parse html,
such as:

<el-form :model="kefuForm"  :rules="rules" ref="kefuForm">
            <el-form-item  prop="username">
                <el-input v-model="kefuForm.username" placeholder="用户名"></el-input>
            </el-form-item>
            <el-form-item  prop="password">
                <el-input v-model="kefuForm.password" type="password" placeholder="密码"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button style="width: 100%" :loading="loading" type="primary" @click="kefuLogin('kefuForm')">登录</el-button>
            </el-form-item>
        </el-form>

but I get error!
[xmldom error] element parse error: Error: invalid attribute::model
@#[line:62,col:9]
[xmldom error] element parse error: Error: invalid attribute::loading
@#[line:70,col:17]

@Lhasa23
Copy link

Lhasa23 commented Jun 15, 2021

Do you fix it?

@Falways
Copy link
Author

Falways commented Jun 16, 2021

Do you fix it?
Annotated source code, solved my problem!
update sax.js

ElementAttributes.prototype = {
	setTagName:function(tagName){
		if(!tagNamePattern.test(tagName)){
			throw new Error('invalid tagName:'+tagName)
		}
		this.tagName = tagName
	},
	add:function(qName,value,offset){
		/*if(!tagNamePattern.test(qName)){
			throw new Error('invalid attribute:'+qName)
		}*/
		this[this.length++] = {qName:qName,value:value,offset:offset}
	},
	length:0,
	getLocalName:function(i){return this[i].localName},
	getLocator:function(i){return this[i].locator},
	getQName:function(i){return this[i].qName},
	getURI:function(i){return this[i].uri},
	getValue:function(i){return this[i].value}
//	,getIndex:function(uri, localName)){
//		if(localName){
//			
//		}else{
//			var qName = uri
//		}
//	},
//	getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},
//	getType:function(uri,localName){}
//	getType:function(i){},
}

@Falways Falways closed this as completed Jun 16, 2021
@karfau
Copy link

karfau commented Jun 17, 2021

Just in case you didn't notice, the repo is now forked and maintained over at https://github.com/xmldom/xmldom

But as far as I know those attributes with a leading colon are not valid XML.
Of course I could be wrong, in which case there is a good chance to get it fixed in xmldom.

@Lhasa23
Copy link

Lhasa23 commented Jun 17, 2021

Just in case you didn't notice, the repo is now forked and maintained over at https://github.com/xmldom/xmldom

But as far as I know those attributes with a leading colon are not valid XML.
Of course I could be wrong, in which case there is a good chance to get it fixed in xmldom.

I use it for parsing Vue HTML-template string. There will be some attributes with leading by colon or '@'. I view your repo and I notice you do the same thing for attribute name.
Anyway I use origin DOMParse API back to parse my Vue string. Maybe you could set different condition for origin HTML/XML string or Vue HTML-template string.
That's my narrow minded opinion.

@karfau
Copy link

karfau commented Jun 18, 2021

@Lhasa23 Thanks for pointing it out.
I checked the specs and you are right.

I filed this issue to address in xmldom at some point in the future:
xmldom/xmldom#252

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants