0

3 つのファイル (Database.xml、Participants.xml、ConditionTokens.xml) にいくつかの xml データが含まれています。外部エンティティを使用して参加者と条件トークンをデータベース ファイルに配置しようとしていますが、このコードを実行すると...

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

...xml に参加者または条件トークンがありません (「データベース」の HasElements プロパティが false です)。2 つの子要素が必要です。Visual Studio (2008) 内でエラーや警告は表示されず、ライブ スキーマ検証は満足しているように見えますが、コードを実行すると何かが正しくありません。

誰かが私が間違っていることを教えてもらえますか?

以下の 3 つの xml ファイルを貼り付けました。

どうもありがとう!

-ダン

データベース.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>

参加者.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>
4

2 に答える 2

0

XmlDocument クラスを使用して 3 つのドキュメントをロードします。

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

次に、ImportNode と AppendNode を使用して、互いに接続します...

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

それはほとんどそれを行うはずです (または、FirstChild を使用する代わりに xpath セレクターを使用しますか?)

于 2009-06-26T03:33:22.793 に答える
0

<xs:redefine>代わりに使用することになりました。

于 2009-08-27T02:29:52.317 に答える