문제

세 가지 파일 (database.xml, partistant.xml 및 conditionTokens.xml)에 XML 데이터가 포함되어 있습니다. 외부 엔티티를 사용하여 참가자와 조건 토큰을 데이터베이스 파일에 배치하려고하지만이 코드를 실행할 때 ...

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

... 내 XML에는 참가자 또는 조건 토큰이 없습니다 ( "데이터베이스"의 HasElements 속성은 False). 두 개의 아동 요소가 있어야합니다. Visual Studio (2008) 내에서 오류/경고는 얻지 못하며 라이브 스키마 검증은 행복한 것처럼 보이지만 코드를 실행할 때 무언가가 옳지 않습니다.

누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

아래 3 개의 XML 파일을 붙여 넣었습니다.

매우 감사합니다!

-단

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>

컨디셔닝 .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>
도움이 되었습니까?

해결책 2

나는 결국 사용했다 <xs:redefine> 대신에.

다른 팁

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);

그것은 거의 그렇게해야합니다 (또는 Oirthchild를 사용하는 대신 Xpath 선택기를 사용하는 대신?)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top