python dom解析xml
我的xml我截取了一段:<resources><stringname="application_name">Browser</string><stringname="ch...
我的xml 我截取了一段:
<resources>
<string name="application_name">Browser</string>
<string name="choose_upload">Choose file for upload</string>
<string name="uploads_disabled">File uploads are disabled.</string>
<string name="delete_bookmark_warning">Delete bookmark \"
<xliff:g id="bookmark">%s</xliff:g>\"?
</string>
<string name="contextheader_folder_bookmarkcount">
<xliff:g id="bookmark_count">%d</xliff:g> bookmarks
</string>
<string-array name="pref_content_plugins_values" translatable="false">
<item>ON</item>
<item>ON_DEMAND</item>
<item>OFF</item>
</string-array>
</resources>
我要吧里面的文字提取出来。
我的自己写了个简单的程序
1 # -*- coding:utf-8- -*-
2 from xml.dom.minidom import parse
3 import xml.dom.minidom
4
5 DOMTree = xml.dom.minidom.parse("strings_english.xml")
6 resources = DOMTree.documentElement
7
8 strings = resources.getElementsByTagName("string")
9
10 for string in strings:
11 print "%s\n" %string.childNodes[0].data
我可以提取出<string>之间的文字。但是提取到我上面截取的第二个有<xliff:g>节点的地方时报错了,因为文字在<xliff:g></xliff:g>后面。报错是AttributeError: Element instance has no attribute 'data'。该怎么改呢。而且我想提取<xliff:g></xliff:g>之间的文字,但是这个节点名有冒号,要怎么提取。
还有就是有一个<string-array>节点,这个节点和<string>都是resources的字节点,我该在程序的哪里加遍历这个字节点的地方呢,我试了好多地方都不行。
有点麻烦,回答了我还会追加的,谢谢。 展开
<resources>
<string name="application_name">Browser</string>
<string name="choose_upload">Choose file for upload</string>
<string name="uploads_disabled">File uploads are disabled.</string>
<string name="delete_bookmark_warning">Delete bookmark \"
<xliff:g id="bookmark">%s</xliff:g>\"?
</string>
<string name="contextheader_folder_bookmarkcount">
<xliff:g id="bookmark_count">%d</xliff:g> bookmarks
</string>
<string-array name="pref_content_plugins_values" translatable="false">
<item>ON</item>
<item>ON_DEMAND</item>
<item>OFF</item>
</string-array>
</resources>
我要吧里面的文字提取出来。
我的自己写了个简单的程序
1 # -*- coding:utf-8- -*-
2 from xml.dom.minidom import parse
3 import xml.dom.minidom
4
5 DOMTree = xml.dom.minidom.parse("strings_english.xml")
6 resources = DOMTree.documentElement
7
8 strings = resources.getElementsByTagName("string")
9
10 for string in strings:
11 print "%s\n" %string.childNodes[0].data
我可以提取出<string>之间的文字。但是提取到我上面截取的第二个有<xliff:g>节点的地方时报错了,因为文字在<xliff:g></xliff:g>后面。报错是AttributeError: Element instance has no attribute 'data'。该怎么改呢。而且我想提取<xliff:g></xliff:g>之间的文字,但是这个节点名有冒号,要怎么提取。
还有就是有一个<string-array>节点,这个节点和<string>都是resources的字节点,我该在程序的哪里加遍历这个字节点的地方呢,我试了好多地方都不行。
有点麻烦,回答了我还会追加的,谢谢。 展开
展开全部
应该是你的XML文件结构有问题。
把<resources>改为:
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
把<resources>改为:
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
更多追问追答
追问
恩,我仔细看了下,是有问题,改了就好了。那么我想提取节点应该怎么提取呢。
追答
import xml.dom.minidom
from xml.dom.minidom import parse
from xml.dom import minidom, Node
DOMTree = xml.dom.minidom.parse("strings_english.xml")
resources = DOMTree.documentElement
strings = resources.getElementsByTagName("string-array")
for string in strings:
for s in string.childNodes:
#只读取元素:元素element=1,属性attr=2,文本text=3,注释comments=8,文档document=9
if s.nodeType == Node.ELEMENT_NODE:
print s.firstChild.data
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询