Frage

Ich habe einige XML-Daten in drei Dateien enthalten (Database.xml, Participants.xml und ConditionTokens.xml). Ich versuche, externe Stellen zu verwenden, um die Teilnehmer und den Zustand Token in die Datenbankdatei zu platzieren, aber wenn ich diesen Code ausführen ...

string xmlPath = Environment.CurrentDirectory + @"\Data\Database.xml";
XElement database = XElement.Load(xmlPath);

... gibt es keine Teilnehmer oder Bedingung Token in meinem xml (die HasElements Eigenschaft für „Datenbank“ ist falsch). Es sollte zwei untergeordnete Elemente sein. Ich erhalte keine Fehler / Warnungen in Visual Studio (2008) und die Live-Schema-Validierung scheint glücklich zu sein, aber etwas ist nicht ganz richtig, wenn ich meinen Code ausführen.

Kann mir jemand sagen, was ich falsch mache?

Ich habe klebte die drei XML-Dateien unter.

Vielen Dank!

-Dan

Database.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE database [
  <!ENTITY conditionTokens SYSTEM "ConditionTokens.xml">
  <!ENTITY participants SYSTEM "Participants.xml">]>
<database
  xmlns="experimentManager"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="experimentManager Database.xsd">
  &conditionTokens;
  &participants;
</database>

ConditionTokens.xml

<?xml version="1.0" encoding="utf-8" ?>
<conditionTokens>
  <conditionToken>
    <id>1</id>
    <token>LargeToSmall</token>
  </conditionToken>
  <conditionToken>
    <id>2</id>
    <token>SmallToLarge</token>
  </conditionToken>
</conditionTokens>

Participants.xml

<?xml version="1.0" encoding="utf-8" ?>
<participants>
  <participant>
    <id>1</id>
    <conditionTokenId>1</conditionTokenId>
  </participant>
  <participant>
    <id>2</id>
    <conditionTokenId>2</conditionTokenId>
  </participant>
</participants>
War es hilfreich?

Lösung 2

Ich landete mit <xs:redefine> statt.

Andere Tipps

ich das XmlDocument hätte Klasse verwendet, um die drei Dokumente zu laden

XmlDocument xmlDatabase = new XmlDocument();
xmlDatabase.Load(databasePath);
XmlDocument xmlTokens = new XmlDocument();
xmlTokens.Load(tokensPath);
XmlDocument xmlParticipants = new XmlDocument();
xmlParticipants.Load(participantsPath);

Dann mit dem ImportNode und appendnode befestigen dann miteinander ...

xmlDatabase.FirstChild.AppendNode(xmlDatabase.ImportNode(xmlTokens.FirstChild), true);
xmlDatabase.FirstChild.AppendNode(xmlDatabase.ImportNode(xmlParticipants.FirstChild), true);

Das sollte so ziemlich tut es (oder anstelle der Verwendung von Firstchild einen XPath-Selektor verwenden?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top