我如何去写在C#中的parsing器(recursion下降?)? 现在我只想要一个简单的parsing器来分析算术expression式(并读取variables?)。 虽然后来我打算写一个XML和HTMLparsing器(用于学习的目的)。 我这样做是因为parsing器有用的各种各样的东西:Web开发,编程语言解释器,内部工具,游戏引擎,地图和瓷砖编辑器等等。那么编写parsing器的基本理论是什么?在C#中实现一个? C#是parsing器的正确语言(我曾经用C ++编写过一个简单的算术parsing器,效率很高,JIT编译certificate是否合适?)。 任何有用的资源和文章。 最重要的是,代码示例(或代码示例的链接)。 注意:出于好奇,有没有人回答这个问题在C#中实现了一个parsing器?
我想用Pythonparsing一个html文件,我使用的模块是美丽的。 我使用之后,发生了一些奇怪的事情。据说函数“find_all”是 和“findAll”一样,但我已经试过了。 但它是不同的。 谁能告诉我不同? import urllib, urllib2, cookielib from BeautifulSoup import * site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407" rqstr = urllib2.Request(site) rq = urllib2.urlopen(rqstr) fchData = rq.read() soup = BeautifulSoup(fchData) t = soup.findAll('tr') print t
我有一个ListView显示我通过数组(这是在另一个类,我通过它的对象访问它)的一些数据。 每当我通过上下文菜单从ListView中删除一个元素时,这个列表不会刷新,而是从数组中删除这个元素。 我如何刷新列表来显示这个? 码: public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (v.getId()==R.id.mainListView) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; post=info.position; menu.setHeaderTitle(stocks[info.position]); String[] menuItems = stt; for (int i = 0; i<menuItems.length; i++) { menu.add(Menu.NONE, i, i, menuItems[i]); } } } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); int menuItemIndex = item.getItemId(); […]
我正在用Java编写一个程序,它接受一个自定义XML文件并对其进行parsing。 我正在使用XML文件进行存储。 我在Eclipse中得到以下错误。 [Fatal Error] :1:1: Content is not allowed in prolog. org.xml.sax.SAXParseException: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283 ) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208) at me.ericso.psusoc.RequirementSatisfier.parseXML(RequirementSatisfier.java:61) at me.ericso.psusoc.RequirementSatisfier.getCourses(RequirementSatisfier.java:35) at me.ericso.psusoc.programs.RequirementSatisfierProgram.main(RequirementSatisfierProgram.java:23 ) 包含XML文件的开始部分: <?xml version="1.0" ?> <PSU> <Major id="IST"> <name>Information Science and Technology</name> <degree>BS</degree> <option> Information Systems: Design and Development Option</option> <requirements> <firstlevel type="General_Education" […]
我意识到这不是优雅或想要的,但它允许(在格式良好的XML)的XML元素中的属性值跨越多行? 例如 <some-xml-element value="this value goes over…. multiple lines!" /> 是的,我意识到有更好的写作方式。 我会亲自把它写成: <some-xml-element> <value>this value goes over… multiple lines!</value> </some-xml-element> 要么: <some-xml-element value="this value goes over…. " /> 但是我们有我们自己的XMLparsing器,我想知道第一个例子是否允许在格式良好的XML中。
当我尝试实现下面的代码时,我得到一个NetworkOnMainThreadException: public class HandlingXMLStuff extends ListActivity{ static final String URL = "xml_file"; static final String ITEM = "item"; //parent static final String Id = "id"; static final String Name = "name"; static final String Desc = "desc"; static final String Link = "Link"; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.xmllist); ArrayList<HashMap<String, String>> menuItems = new […]
我阅读了一些关于XMLparsing器的文章,并且遇到了SAX和DOM 。 SAX是基于事件的, DOM是树模型 – 我不了解这些概念之间的差异。 从我所了解的情况来看,基于事件的意味着某种事件发生在节点上。 就像点击一个特定的节点时,它会给所有的子节点,而不是同时加载所有的节点。 但在DOMparsing的情况下,它将加载所有的节点,并build立树模型。 我的理解是正确的吗? 请纠正我如果我错了,或者以更简单的方式向我解释基于事件和树模型。
我正在寻找一个Python的HTMLparsing器模块,它可以帮助我以Python列表/字典/对象的forms获取标签。 如果我有一个文件的forms: <html> <head>Heading</head> <body attr1='val1'> <div class='container'> <div id='class'>Something here</div> <div>Something else</div> </div> </body> </html> 那么它应该给我一个方法来通过HTML标签的名称或ID来访问嵌套标签,这样我就可以基本上要求它把body标签中class='container'的div标签中的内容/文本或类似的东西。 如果你已经使用Firefox的“检查元素”function(查看HTML),你会知道它会给你所有的标签,像树一样,以一种很好的嵌套方式。 我更喜欢一个内置的模块,但可能会有点太多。 在Stack Overflow和一些博客上,我经历了大量的问题,其中大部分都提到了BeautifulSoup或者lxml或者HTMLParser,但是很less有这些详细的function,只是最终争论哪个更快更好。
我有XML文档,我需要parsing和/或我需要build立XML文档,并将其写入文本(文件或内存)。 由于C ++标准库没有这个库,我应该使用什么? 注意:这是一个明确的,C ++ – FAQ风格的问题。 所以是的,这是其他人的重复。 我不是简单地适合那些其他的问题,因为他们倾向于要求更具体的东西。 这个问题更通用。
我有我想用Python的ElementTreeparsing的以下XML: <rdf:RDF xml:base="http://dbpedia.org/ontology/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://dbpedia.org/ontology/"> <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague"> <rdfs:label xml:lang="en">basketball league</rdfs:label> <rdfs:comment xml:lang="en"> a group of sports teams that compete against each other in Basketball </rdfs:comment> </owl:Class> </rdf:RDF> 我想查找所有owl:Class标签,然后提取其中所有rdfs:label实例的值。 我正在使用下面的代码: tree = ET.parse("filename") root = tree.getroot() root.findall('owl:Class') 由于命名空间,我收到以下错误。 SyntaxError: prefix 'owl' not found in prefix map 我尝试阅读文档在http://effbot.org/zone/element-namespaces.htm,但我仍然无法得到这个工作,因为上面的XML有多个嵌套的命名空间。 请让我知道如何改变代码来find所有的owl:Class标签。