Ich habe eine ziemlich große XML-Datei von einer Computerdiagnosesitzung, und mein Ziel ist es, die Testergebnisdaten zu erfassen und für den Kunden in ein PDF zu pumpen. Ich habe sehr wenig Erfahrung mit XML und dies wird zu einem großen Problem. HierUntergeordnete Knoten in XML mit benutzerdefiniertem Namespace abrufen
ist eine Probe des Dokuments:
<pcd:DiagLog xmlns="http://www.pc-doctor.com/2004/8/diagLogger"
xmlns:pcd="http://www.pc-doctor.com/2004/8/diagLogger"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.pc-doctor.com/2004/8/diagLogger
http://www.pc-doctor.com/2004/8/diagLogger/diagLogger.xsd">
<Application>
<version>6.0.6818.10</version>
<Start>
<Time hour="04" minute="14" second="01" millisecond="34" month="10" day="15" year="2016" utcOffset="-480">2016-10-15T04:14:01.034-08:00</Time>
</Start>
<OS>Windows 10 Service Pack 0 PE x86 32-bit</OS>
</Application>
.......
<DiagInfo>
....
<TestResult EnglishResult="PASS">
....
</TestResult>
</DiagInfo>
Es gibt Tausende von Linien zwischen </Application>
und <DiagInfo>
, aber ich bin nur mit den Informationen in <DiagInfo>
und <TestResult>
gefunden.
Ich dachte, ich die Knoten einfach greifen könnte:
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilePath);
XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
manager.AddNamespace("pcd", "http://www.pc-doctor.com/2004/8/diagLogger");
XmlNodeList xnList = doc.SelectNodes("/pcd:DiagLog/DiagInfo", manager);
Aber dieses eine leere Liste zurückkehrt. Wenn ich auf Namespace Manager or XsltContext needed Bezug nehme, erscheint es erscheint Ich mache es richtig, aber ich glaube nicht, dass ich verstehe, einen Namespace korrekt hinzufügen. Wenn ich das Root-Element in nur ändern: <Diagnostics></Diagnostics>
anstelle der <pcd:DiagLog>
, und versuchen Sie: doc.SelectNodes("/Diagnostics/DiagInfo", manager);
meine Knotenliste ist ausgefüllt.
Kann jemand sehen, wo ich den Namespace vermassele?
@Tomalak das war ein Fehler durch Kopieren/Einfügen. Ich überprüfte den Code und die URIs stimmen überein. –