0
여기에 무슨 문제가 있습니까?Python, XML 구문 분석 및 Elementtree
결과를 반환 할 수 없습니다. 나는 바보 같은 짓을하고 있다고 확신한다. 나는 프로그래머가 아니에요. 그리고 이것은 나를 미치게합니다. 배우려고 노력하고있는 약 8 시간 이후 나는 frazzled하다. 여기
내 XML의 샘플입니다 : 여기
<?xml version="1.0"?>
-<MyObjectBuilder_Sector xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Saved '2014-08-23T15:28:07.8585220-05:00' with SEToolbox version '1.44.14.2' -->
-<Position>
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Position>
-<SectorEvents>
-<Events>
-<MyObjectBuilder_GlobalEventBase>
-<DefinitionId>
<TypeId>MyObjectBuilder_GlobalEventDefinition</TypeId>
<SubtypeId>SpawnCargoShip</SubtypeId>
</DefinitionId>
<Enabled>false</Enabled>
<ActivationTimeMs>401522</ActivationTimeMs>
</MyObjectBuilder_GlobalEventBase>
</Events>
</SectorEvents>
<AppVersion>1044014</AppVersion>
-<SectorObjects>
-<MyObjectBuilder_EntityBase xsi:type="MyObjectBuilder_VoxelMap">
<EntityId>72248529206701361</EntityId>
<PersistentFlags>CastShadows InScene</PersistentFlags>
-<PositionAndOrientation>
<Position z="-466" y="-8987" x="-95"/>
<Forward z="-1" y="0" x="0"/>
<Up z="0" y="1" x="0"/>
</PositionAndOrientation>
<Filename>BaseAsteroid.vox</Filename>
</MyObjectBuilder_EntityBase>
-<MyObjectBuilder_EntityBase xsi:type="MyObjectBuilder_VoxelMap">
<EntityId>72151252176979970</EntityId>
<PersistentFlags>CastShadows InScene</PersistentFlags>
-<PositionAndOrientation>
<Position z="-11301.9033" y="-1183.70569" x="-2126.84"/>
<Forward z="-1" y="0" x="0"/>
<Up z="0" y="1" x="0"/>
</PositionAndOrientation>
<Filename>asteroid0.vox</Filename>
</MyObjectBuilder_EntityBase>
-<MyObjectBuilder_EntityBase xsi:type="MyObjectBuilder_VoxelMap">
<EntityId>72108197145016458</EntityId>
<PersistentFlags>CastShadows InScene</PersistentFlags>
-<PositionAndOrientation>
<Position z="355.7873" y="18738.05" x="1064.912"/>
<Forward z="-1" y="0" x="0"/>
<Up z="0" y="1" x="0"/>
</PositionAndOrientation>
<Filename>asteroid1.vox</Filename>
</MyObjectBuilder_EntityBase>
내 코드, 그냥 결코 귀하의 질문은 '은 ... 아무것도 발견하지 :(
from xml.etree import cElementTree as ElementTree
ElementTree.register_namespace('xsi', 'http://www.w3.org/2001/XMLScheme-instance')
namespace = {'xsi': 'http://www.w3.org/2001/XMLScheme-instance'}
xmlPath = 'e:\\test.xml'
xmlRoot = ElementTree.parse(xmlPath).getroot()
#why this no return anything
results = xmlRoot.findall(".//SectorObjects/MyObjectBuilder_EntityBase[@xsi:type='MyObjectBuilder_VoxelMap']", namespaces=namespace)
print(results)
유효하지 않은 XML입니다. 오류가 있거나 루트가없는 경우입니다. [this one] (http://www.xmlvalidation.com/)과 같은 온라인 XML 유효성 검사기에 붙여 넣으십시오. 그러면 해당 내용이 설명됩니다. – abarnert
(그리고 물론 빈 나무는'findall'에 대해 아무것도 반환하지 않을 것입니다.) – abarnert
그것은 XML의 일부분에 지나지 않습니다. 지금 업로드하려고하는데 약 5MB입니다. 그것을 망치지 stackoverflow 가져올 수 없습니다. 나무는 비어 있지 않습니다. ".//SectorObjects /"에 대해 알아 내면 충분히 얻을 수 있습니다. – demolish50