0

我在三个文件(Database.xml、Participants.xml 和 ConditionTokens.xml)中包含一些 xml 数据。我正在尝试使用外部实体将参与者和条件令牌放入数据库文件中,但是当我运行此代码时......

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

...我的 xml 中没有参与者或条件标记(“数据库”的 HasElements 属性为假)。应该有两个子元素。我在 Visual Studio (2008) 中没有收到任何错误/警告,并且实时模式验证似乎很开心,但是当我运行我的代码时,有些地方不太对劲。

谁能告诉我我做错了什么?

我已经粘贴了下面的三个 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>

条件令牌.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 回答