为什么我不能访问该元素的属性? (一个简单的问题)

时间:2019-03-30 17:41:08

标签: xml xpath

我无法访问此元素的属性。我试图像访问外部循环一样访问它,就像我们在Java中一样。

我试图浏览自动填充的选项,但似乎没有什么对我足够明显

//Studiengaenge/Studiengang[avg(../../Module/Modul[Name = 'Mathematik']//Student[contains-token(id(@StudiengangId)/Student/attribute(), @studentId)]/Note) < 3.0]/Name/text()

我希望我可以很好地访问元素@StudiengangId的属性Studiengang

这是xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Hochschule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./Aufgabe1.xsd">
    <Studiengaenge>
        <Studiengang StudiengangId="G1">
            <Name>Informatik</Name>
            <Student id="S300564">
                <Vorname>Jan Steffen</Vorname>
                <Nachname>Krohn</Nachname>
                <Anschrift>A4</Anschrift>
                <Email>jan.steffen.krohn@stud.th-luebeck.de</Email>
                <Geburtstag>1994-04-09</Geburtstag>
                <Semester>4</Semester>
            </Student>
            <Student id="S302119" >
                <Vorname>Aurélie</Vorname>
                <Nachname>Simo</Nachname>
                <Anschrift>A5</Anschrift>
                <Geburtstag>1998-05-12</Geburtstag>
                <Semester>4</Semester>
            </Student>
            <Student id="S301877">
                <Vorname>Mohammad</Vorname>
                <Nachname>Hakim</Nachname>
                <Anschrift>A6</Anschrift>
                <Geburtstag>1996-04-28</Geburtstag>
                <Semester>4</Semester>
            </Student>
        </Studiengang>
        <Studiengang StudiengangId="G2">
            <Name>BWL</Name>
            <Student id="S300565">
                <Vorname>Andreas</Vorname>
                <Nachname>Müller</Nachname>
                <Anschrift>A5</Anschrift>
                <Geburtstag>1998-05-12</Geburtstag>
                <Semester>1</Semester>
            </Student>
            <Student id="S300685">
                <Vorname>Tim</Vorname>
                <Nachname>Meier</Nachname>
                <Anschrift>A5</Anschrift>
                <Geburtstag>1996-05-12</Geburtstag>
                <Semester>1</Semester>
            </Student>      
        </Studiengang>
        <Studiengang StudiengangId="G3">
            <Name>Physik</Name>         
        </Studiengang>
    </Studiengaenge>
    <Module>
        <Modul dozentId="D4">
            <Name>Mathematik</Name>
            <Studierende>
                <Student studentId= "S302119">
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S301877">
                    <Note>2.0</Note>
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S300564">
                    <Note>1.0</Note>
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S300565">
                    <Note>5.0</Note>
                    <Versuch>3</Versuch>
                </Student>
                <Student studentId="S300685">
                    <Note>2.0</Note>
                    <Versuch>2</Versuch>
                </Student>
            </Studierende>
            <Studiengaenge>G1 G2</Studiengaenge>
        </Modul>
        <Modul dozentId="D3">
            <Name>Programmierung</Name>
            <Studierende> 
                <Student studentId="S301877">
                    <Note>3.2</Note>
                    <Versuch>2</Versuch>
                </Student>
                <Student studentId="S300565">
                    <Note>1.0</Note>
                    <Versuch>2</Versuch>
                </Student>
            </Studierende>
            <Evaluationen>
                <Evaluation evaluationId="E1">
                    <Schluessel>LOL</Schluessel>
                    <Kommentar>Steffen ist oberklug</Kommentar>
                </Evaluation>
                <Evaluation evaluationId="E1">
                    <Schluessel>3g4auvli34h</Schluessel>
                    <Kommentar>Sehr tolles Modul</Kommentar>
                </Evaluation>
            </Evaluationen>
        </Modul>
        <Modul dozentId="D2">
            <Name>Datenbanken</Name>
            <Studierende>
                <Student studentId="S300565">
                    <Note>1.8</Note>
                    <Versuch>1</Versuch>
                </Student>
            </Studierende>
        </Modul>
        <Modul dozentId="D1">
            <Name>Rechnerstruckturen</Name>
            <Studierende>
                <Student studentId="S300564">
                    <Note>1.3</Note>
                    <Versuch>2</Versuch>
                </Student>
                <Student studentId="S301877">
                    <Note>3.7</Note>
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S302119">
                    <Note>4.0</Note>
                    <Versuch>1</Versuch>
                </Student>
            </Studierende>
            <Evaluationen>
            </Evaluationen>
            <Studiengaenge>G1</Studiengaenge>
        </Modul>
        <Modul dozentId="D2">
            <Name>Theoretische Informatik</Name>
            <Studierende>
                <Student studentId="S300564">
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S301877">
                    <Versuch>1</Versuch>
                </Student>
                <Student studentId="S302119">
                    <Versuch>1</Versuch>
                </Student>
            </Studierende>
            <Studiengaenge>G1 G2</Studiengaenge>
        </Modul>
        <Modul dozentId="D3">
            <Name>Rechnernetze</Name>
            <Studierende>
                <Student studentId="S300564">
                    <Note>3.7</Note>
                    <Versuch>3</Versuch>
                </Student>
                <Student studentId="S301877">
                    <Note>2.0</Note>
                    <Versuch>2</Versuch>
                </Student>
                <Student studentId="S302119">
                    <Versuch>1</Versuch>
                </Student>
            </Studierende>
            <Studiengaenge>G3</Studiengaenge>
        </Modul>
    </Module>
    <Dozent id="D4">
        <Vorname>Nane</Vorname>
        <Nachname>Kratzke</Nachname>
        <Anschrift>A1</Anschrift>
        <Geburtstag>1987-09-17</Geburtstag>
        <Titel>Prof.</Titel>
    </Dozent>
    <Dozent id="D1">
        <Vorname>Ole</Vorname>
        <Nachname>Blaurock</Nachname>
        <Anschrift>A1</Anschrift>
        <Email>blaurock@th-luebeck.de</Email>
        <Geburtstag>1998-05-12</Geburtstag>
        <Titel>Prof. Dr.</Titel>
    </Dozent>
    <Dozent id="D2">
        <Vorname>Andreas</Vorname>
        <Nachname>Schäfer</Nachname>
        <Anschrift>A2</Anschrift>
        <Geburtstag>1998-05-12</Geburtstag>
        <Titel>Prof. Dr. Dr.</Titel>
    </Dozent>
    <Dozent id="D3">
        <Vorname>Andreas</Vorname>
        <Nachname>Hanemann</Nachname>
        <Anschrift>A3</Anschrift>
        <Geburtstag>1998-05-12</Geburtstag>
        <Titel>Prof. Dr.</Titel>
    </Dozent>
    <Evaluationen>
        <Evaluation id="E1">
            <Fragen>
                <Frage id="F1">
                    <Text>War der Aufwand angemessen?</Text>
                </Frage>
                <Frage id="F2">
                    <Text>War Der Dozent nett?</Text>
                </Frage>
            </Fragen>
        </Evaluation>
    </Evaluationen>
    <Anschrift id="A1">
            <Strasse>Ziegelstraße</Strasse>
            <Hausnummer>51</Hausnummer>
            <Postleitzahl>23566</Postleitzahl>
            <Stadt>Lübeck</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
        <Anschrift id="A2">
            <Strasse>Mündungsweg</Strasse>
            <Hausnummer>7</Hausnummer>
            <Postleitzahl>23566</Postleitzahl>
            <Stadt>Lübeck</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
        <Anschrift id="A3">
            <Strasse>Moislingerstrasse</Strasse>
            <Hausnummer>143b</Hausnummer>
            <Postleitzahl>23562</Postleitzahl>
            <Stadt>Lübeck</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
        <Anschrift id="A4">
            <Strasse>Claudiusring</Strasse>
            <Hausnummer>23f</Hausnummer>
            <Postleitzahl>23565</Postleitzahl>
            <Stadt>Lübeck</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
        <Anschrift id="A5">
            <Strasse>Beim Brinkmannschen Park</Strasse>
            <Hausnummer>44</Hausnummer>
            <Postleitzahl>21079</Postleitzahl>
            <Stadt>Hamburg</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
        <Anschrift id="A6">
            <Strasse>Anschützstraße</Strasse>
            <Hausnummer>11</Hausnummer>
            <Postleitzahl>23562</Postleitzahl>
            <Stadt>Lübeck</Stadt>
            <Land>Deutschland</Land>
        </Anschrift>
</Hochschule>

在这种情况下,结果应该只是一个Studiengang的名字,即Informatik

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找这个-可以使用例如lxml:

from lxml import etree
doc = etree.fromstring(your_xml_code_from_question)

counter = 1
count = doc11.xpath('count(///Hochschule/Studiengaenge/Studiengang)')
for i in range(int(count)):
   a_path = f"/Hochschule/Studiengaenge/Studiengang{[counter]}/Name"
   print(doc11.xpath(a_path)[0].text)
   counter += 1

输出:

Informatik
BWL
Physik