关于xml的域名解析,自己想了一个笨办法,求教有没有更好的想法,愿付酬劳
例子:<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsd="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:wsdp="http://schemas.xmlsoap.org/ws/2006/02/devprof">
<soap:Header>
<wsa:To>
urn:schemas-xmlsoap-org:ws:2005:04:discovery
</wsa:To>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe
</wsa:Action>
<wsa:MessageID>
urn:uuid:29cf10da-5c41-4d55-b184-5ee15e38ce23
</wsa:MessageID>
</soap:Header>
<soap:Body>
<wsd:Probe>
<wsd:Types>wsdp:Device</wsd:Types>
</wsd:Probe>
</soap:Body>
1.找到字符串http://schemas.xmlsoap.org/ws/2006/02/devprof所在位置
2.假定字符串起始位置为mIndex,则减去2(去掉="),然后读取在此之前的字符,直到xmlns:的:,反转字符位置,存在Array里面,这个就是xml的域名之一
3.同理读取http://www.w3.org/2003/05/soap-envelope等,获得其他域名
4.根据XML定义,我们知道元素Header前的域名和http://www.w3.org/2003/05/soap-envelope关联,所以读取:Header>前的字符,并和前面获得的域名比较
5.同理检测其他元素前的域名,完成域名解析
缺点:太繁琐,而且一旦其他元素不使用<xxx:元素名>的方式,则无法解析
求教高手是否有其他方式解析检查域名,前提是不能使用xml parser,因为传感器存储空间太小(36kb),如有其他好方法我愿付酬 你的格式是固定的,还是可变的?如果是特定格式,可以做到。可以用正规表达式解析么? 原帖由 ourgame 于 2008-5-19 18:43 发表 http://www.dolc.de/forum/images/common/back.gif
你的格式是固定的,还是可变的?如果是特定格式,可以做到。可以用正规表达式解析么?
你指什么格式?namespace都是可变的 可以用正则表达式,比如这样的:+://[^\s]*或者把冒号前面的固定成http 原帖由 drach 于 2008-5-19 20:15 发表 http://www.dolc.de/forum/images/common/back.gif
你指什么格式?namespace都是可变的
我的意思就是
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope
xmlns:soap="some_where"
xmlns:wsa="some_where"
xmlns:wsd="some_where"
xmlns:wsdp="some_where">
<soap:Header>
<wsa:To>some_thing</wsa:To>
<wsa:Action>some_where</wsa:Action>
<wsa:MessageID>some_thing</wsa:MessageID>
</soap:Header>
<soap:Body>
<wsdrobe>
<wsd:Types>wsdpevice</wsd:Types>
</wsdrobe>
</soap:Body>
如果大致格式是这样固定的,那么你手动解析没什么问题。
如果你的文件内容,不是固定的,这种解析方法就不行了。
网上我看见一个ezxml,你去搜索试试看,或者再搜索 c tiny xml parser,总有人遇到和你一样的问题的。 原帖由 ourgame 于 2008-5-19 23:27 发表 http://www.dolc.de/forum/images/common/back.gif
我的意思就是
some_thing
some_where
some_thing
wsdpevice
如果大致格式是这样固定的,那么你手动解析没什么问题。
如果你的文件内容,不是固定的,这种解 ...
谢谢,ezxml是用dom来进行parser,所以很占用内存,我找找其他的看看 找到一个很好的解析器,expat,编译后占RAM19k 找到就好。自己写实在很累。而且不一定可以写的好。
页:
[1]