Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中访问xml属性_Python_Xml - Fatal编程技术网

如何在python中访问xml属性

如何在python中访问xml属性,python,xml,Python,Xml,下面给出了我的XML文件示例,我想访问文本“面包也是一流的”和类别“食品” 这取决于XML格式的复杂程度。最简单的方法是直接访问路径 import xml.etree.ElementTree as ET tree = ET.parse('x.xml') root = tree.getroot() print(root.find('.//text').text) print(root.find('.//aspectCategory').attrib['category']) 但是,如果有类似

下面给出了我的XML文件示例,我想访问文本“面包也是一流的”和类别“食品”


这取决于XML格式的复杂程度。最简单的方法是直接访问路径

import xml.etree.ElementTree as ET

tree = ET.parse('x.xml')
root = tree.getroot()

print(root.find('.//text').text)
print(root.find('.//aspectCategory').attrib['category'])

但是,如果有类似的标记,您可能希望使用更长的路径,如
//aspectCategories/aspectCategories

以下是解决您问题的代码

import os
import xml.etree.ElementTree as ET


basedir = os.path.abspath(os.path.dirname(__file__))
filenamepath = os.path.join(basedir, 'Restaurants_Test_Gold.txt')

test_text_file = open(filenamepath, 'r')
file_contents = test_text_file.read()

tree = ET.fromstring(file_contents)

for sentence in list(tree):
    sentence_items = list(sentence.iter())
    # remove first element because it's the sentence element [<sentence>] itself
    sentence_items = sentence_items[1:]
    for item in sentence_items:
        if item.tag == 'text':
            print(item.text)
        elif item.tag == 'aspectCategories':
            category = item.find('aspectCategory')
            print(category.attrib.get('category'))

test_text_file.close()
导入操作系统
将xml.etree.ElementTree作为ET导入
basedir=os.path.abspath(os.path.dirname(_文件__))
filenamepath=os.path.join(basedir'Restaurants\u Test\u Gold.txt')
test\u text\u file=open(filenamepath,'r')
file\u contents=test\u text\u file.read()
tree=ET.fromstring(文件内容)
对于列表(树)中的句子:
句子\项目=列表(句子.iter())
#删除第一个元素,因为它是句子元素[]本身
句子项目=句子项目[1:]
对于句子中的项目_项目:
如果item.tag==“text”:
打印(项目.文本)
elif item.tag==“aspectCategories”:
category=item.find('aspectCategory')
打印(category.attrib.get('category'))
测试文本文件。关闭()
希望能有帮助

import xml.etree.ElementTree as ET

tree = ET.parse('x.xml')
root = tree.getroot()

print(root.find('.//text').text)
print(root.find('.//aspectCategory').attrib['category'])
import os
import xml.etree.ElementTree as ET


basedir = os.path.abspath(os.path.dirname(__file__))
filenamepath = os.path.join(basedir, 'Restaurants_Test_Gold.txt')

test_text_file = open(filenamepath, 'r')
file_contents = test_text_file.read()

tree = ET.fromstring(file_contents)

for sentence in list(tree):
    sentence_items = list(sentence.iter())
    # remove first element because it's the sentence element [<sentence>] itself
    sentence_items = sentence_items[1:]
    for item in sentence_items:
        if item.tag == 'text':
            print(item.text)
        elif item.tag == 'aspectCategories':
            category = item.find('aspectCategory')
            print(category.attrib.get('category'))

test_text_file.close()