Visual Studio 2008에서 외부 엔터티를 사용하여 XML 파일 병합
-
20-08-2019 - |
문제
세 가지 파일 (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 선택기를 사용하는 대신?)
제휴하지 않습니다 StackOverflow