ElementTree не слишком разбирается в пространствах имен. Вы должны дать методам .find()
, findall()
и iterfind()
явный словарь пространств имен. Это не очень хорошо документировано:
namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'} # add more as needed
root.findall('owl:Class', namespaces)
Префиксы только просмотрены в параметре namespaces
, который вы проходите. Это означает, что вы можете использовать любой префикс пространства имен, который вам нравится; API отделяет часть owl:
, просматривает соответствующий URL-адрес пространства имен в словаре namespaces
, а затем изменяет поиск, чтобы искать выражение XPath {http://www.w3.org/2002/07/owl}Class
. Вы тоже можете использовать тот же синтаксис:
root.findall('{http://www.w3.org/2002/07/owl#}Class')
Если вы можете переключиться на библиотеку lxml
, все будет лучше; эта библиотека поддерживает один и тот же API ElementTree, но собирает пространства имен для вас в атрибуте .nsmap
для элементов.
Вам нужно что-то подобное, используя ngFor
,
<table class="table table-striped">
<thead>
<tr>
<th>Id</th>
<th>Workorder No</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let work of data.workorder">
<td>{{work?.id}}</td>
<td>{{work?.Workorderno}}</a></td>
</tr>
</tbody>
</table>
</div>
, и ваш интерфейс должен быть таким,
export interface Workorder {
id: number;
Workorderno: number;
Nfno: number;
Amount: number;
Orderno: number;
createdAt: string;
updatedAt: string;
}
, а затем в вашем компоненте ,
data : Workorder;
constructor(private service: nowService) {
}
ngOnInit() {
this.service.getAll().subscribe((data) => {
this.data = data;
})
}
}
Попробуйте добавить в тег tr: ngIf = "data.workorder! = Null"