我正在研究我的这个个人项目,只是为了好玩,我想阅读一个xml文件,该文件位于http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml 并解析xml和用它来转换货币之间的价值.
到目前为止,我已经提出了下面的代码,这是非常基本的,以便读取xml,但我得到以下错误.
XMLHttpRequest无法加载****.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://run.jsbin.com "访问.
$(document).ready(
function() {
$.ajax({
type: 'GET',
url: 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
dataType: 'xml',
success: function(xml){
alert('aaa');
}
});
}
);
Run Code Online (Sandbox Code Playgroud)
我没有看到我的代码有任何问题所以我希望有人可以指出我的代码错误,以及我如何解决它.
我意识到它并不优雅或不合适,但它是否允许(在格式良好的XML中)XML元素中的属性值跨越多行?
例如
<some-xml-element value="this value goes over....
multiple lines!" />
Run Code Online (Sandbox Code Playgroud)
是的,我意识到有更好的写作方式.我个人会写它:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
Run Code Online (Sandbox Code Playgroud)
要么:
<some-xml-element value="this value goes over.... " />
Run Code Online (Sandbox Code Playgroud)
但是我们有自己的XML解析器,我想知道第一个例子是否在格式良好的XML中被允许.
我有Google Checkout沙箱生成的HTML代码,可以在HTML页面中正常使用.当我在XHTML页面中放入相同的代码时,它会引发以下异常:
对实体"w"的引用必须以';'结尾 分隔符
它w在以下src属性中引用URL中的请求参数:
<input type="image" name="Google Checkout" alt="Fast checkout through Google"
src="http://sandbox.google.com/checkout/buttons/checkout.gif?merchant_id=211512493599623&w=180&h=46&style=white&variant=text&loc=en_US"
height="46" width="180" />
Run Code Online (Sandbox Code Playgroud)
这是怎么造成的,我该如何解决?
流式xml解析器(如SAX和StAX)比构建像DOM解析器这样的树结构的解析器更快,内存效率更高.SAX是一个推送解析器,意味着它是观察者模式的一个实例(也称为监听器模式).SAX首先存在,但随后出现了StAX - 一个拉解析器,意味着它基本上像迭代器一样工作.
你可以找到为什么在任何地方都喜欢StAX而不是SAX的原因,但它通常归结为:"它更容易使用".
在关于JAXP的Java教程中,StAX被模糊地呈现为DOM和SAX之间的中间:"它比SAX更容易,并且比DOM更高效".但是,我从来没有发现任何线索,StAX比SAX更慢或内存效率更低.
这一切让我想知道:有没有理由选择SAX而不是StAX?
我在android应用程序中定义了一个字符串:
<string name="search_occurs">'{string}' occurs {times}</string>
这给出了错误:撇号前面没有\('{string}'出现{times})
我已经尝试了很多方法来解决这个问题:
<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">'{string}' occurs {times}</string>
<string name="search_occurs"><![CDATA['{string}' occurs {times}]]></string>
<string name="search_occurs"><![CDATA[\'{string}\' occurs {times}]]></string>
Run Code Online (Sandbox Code Playgroud)
我无法摆脱错误.我错过了什么?
我有这个XML(存储在一个C#字符串中myXML)
<?xml version="1.0" encoding="utf-16"?>
<myDataz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<listS>
<sog>
<field1>123</field1>
<field2>a</field2>
<field3>b</field3>
</sog>
<sog>
<field1>456</field1>
<field2>c</field2>
<field3>d</field3>
</sog>
</listS>
</myDataz>
Run Code Online (Sandbox Code Playgroud)
我想浏览所有<sog>元素.对于他们每个人,我想打印孩子<field1>.
所以这是我的代码:
XmlDocument xmlDoc = new XmlDocument();
string myXML = "<?xml version=\"1.0\" encoding=\"utf-16\"?><myDataz xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><listS><sog><field1>123</field1><field2>a</field2><field3>b</field3></sog><sog><field1>456</field1><field2>c</field2><field3>d</field3></sog></listS></myDataz>"
xmlDoc.Load(myXML);
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("listS");
foreach (XmlNode childrenNode in parentNode)
{
HttpContext.Current.Response.Write(childrenNode.SelectSingleNode("//field1").Value);
}
Run Code Online (Sandbox Code Playgroud)
但似乎我无法读取字符串作为XML?我明白了System.ArgumentException
我在这个主题上搜索了一段时间,并发现了一些结果,我在帖子的末尾提到了.对于下面列出的案例,有人可以帮我准确回答这三个问题吗?
对于哪些使用XmlSluper的用例比XmlParser更有意义,反之亦然(从易用性API /语法的角度来看)?
哪一个更有内存效率?(看起来像Slurper)
哪一个处理xml更快?
案例a.什么时候我必须读取xml中的几乎所有节点?
案例b.什么时候我只需要读几个节点(比如使用gpath表达式)?
案例c.什么时候我必须更新/转换xml?
前提是xml文档不是一般的(具有xml的深度和大小).
资源:
http://www.tutkiun.com/2009/10/xmlparser-and-xmlslurper.html指出:
XMLParser和XMLSlurper之间的区别:
XMLParser和XMLSlurper在用于简单阅读时有相似之处,但是当我们使用它们进行高级阅读时,以及在处理其他格式的XML文档时,两者之间存在差异.
XMLParser在解析文档后存储中间结果.但另一方面,
处理XML文档后,XMLSlurper不存储内部结果.
在处理解析的信息时,真正的基本差异变得明显.这是在流式场景中使用直接就地数据处理和处理进行处理的时候.
http://groovy.dzone.com/news/john-wilson-groovy-and-xml
groovy doc(XmlParser,XmlSlurper)和groovy的网站很好地解释了它们(这里和这里),但在解释上述问题方面做得并不好.
我想解析我的XML文档.所以我存储了我的XML文档,如下所示
class XMLdocs(db.Expando):
id = db.IntegerProperty()
name=db.StringProperty()
content=db.BlobProperty()
Run Code Online (Sandbox Code Playgroud)
现在我的下面是我的代码
parser = make_parser()
curHandler = BasketBallHandler()
parser.setContentHandler(curHandler)
for q in XMLdocs.all():
parser.parse(StringIO.StringIO(q.content))
Run Code Online (Sandbox Code Playgroud)
我收到了以下错误
'ascii' codec can't encode character u'\xef' in position 0: ordinal not in range(128)
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 517, in __call__
handler.post(*groups)
File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/base_handler.py", line 59, in post
self.handle()
File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/handlers.py", line 168, in handle
scan_aborted = not self.process_entity(entity, ctx)
File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/handlers.py", line 233, in process_entity
handler(entity)
File "/base/data/home/apps/parsepython/1.348669006354245654/parseXML.py", line 71, in process
parser.parse(StringIO.StringIO(q.content))
File …Run Code Online (Sandbox Code Playgroud) 我在VBA工作,想要解析一个字符串,例如
<PointN xsi:type='typens:PointN'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<X>24.365</X>
<Y>78.63</Y>
</PointN>
Run Code Online (Sandbox Code Playgroud)
并将X和Y值分成两个独立的整数变量.
在XML方面我是新手,因为我在VB6和VBA中工作,因为我工作的领域.
我该怎么做呢?