programing

XML 파일을 다른 XML 파일로 가져올 수 있습니까?

lovejava 2023. 9. 16. 08:21

XML 파일을 다른 XML 파일로 가져올 수 있습니까?

XML 파일을 다른 XML 파일로 가져올 수 있습니까?

XML에 XML 경로를 매개 변수로 사용하여 XML을 가져오는 가져오기 태그가 있습니까(경로가 제공됩니다.

외부(파싱된) 일반 개체를 사용할 수 있습니다.

다음과 같이 엔터티를 선언합니다.

<!ENTITY otherFile SYSTEM "otherFile.xml">

그러면 이렇게 언급합니다.

&otherFile;

완전한 예:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE doc [
<!ENTITY otherFile SYSTEM "otherFile.xml">
]>
<doc>
  <foo>
    <bar>&otherFile;</bar>
  </foo>
</doc>

XML 파서는 파일을 읽을 때 엔티티 참조를 확장하고 참조된 XML 파일을 컨텐츠의 일부로 포함합니다.

"otherFile.xml"에 다음이 포함된 경우:<baz>this is my content</baz>

그러면 XML 파서에 의해 XML이 평가되고 "보여지는" 다음과 같이 됩니다.

<?xml version="1.0" standalone="no" ?>
<doc>
  <foo>
    <bar><baz>this is my content</baz></bar>
  </foo>
</doc>

도움이 될 몇 가지 참고 자료:

다른 답변은 가장 일반적인 접근법인 X 포함과 XML 외부 엔티티 두 가지를 다룹니다.마이크로소프트는 몇 가지 예시적인 구현뿐만 아니라 X를 포함하는 것을 선호하는 이유에 대해 정말 대단한 글을 쓰고 있습니다.저는 아래의 비교를 인용했습니다.

http://msdn.microsoft.com/en-us/library/aa302291.aspx 기준

X가 포함된 이유는?

첫 번째 질문은 "XML 외부 엔티티 대신 Xinclude를 사용하는 이유는 무엇입니까?"입니다.이에 대한 답은 XML 외부 개체가 여러 가지 잘 알려진 한계와 불편한 함의를 가지고 있기 때문에 범용 포함 시설이 되는 것을 효과적으로 막을 수 있다는 것입니다.구체적으로:

  • XML 외부 개체는 전체 독립 XML 문서가 될 수 없으며, 독립 실행형 XML 선언이나 Docype 선언은 허용되지 않습니다.이는 XML 외부 엔티티 자체가 다른 외부 엔티티를 포함할 수 없음을 의미합니다.
  • XML 외부 엔티티는 XML로 잘 구성되어 있어야 합니다(언뜻 보기에는 그다지 나쁘지 않지만, 샘플 C# 코드를 XML 문서에 포함하고 싶다고 생각해 보십시오).
  • 외부 엔터티를 로드하지 못하면 치명적인 오류입니다. 복구는 엄격히 금지됩니다.
  • 외부 엔티티 전체만 포함할 수 있고, 문서의 일부분만 포함할 수 있는 방법은 없습니다. -외부 엔티티는 DTD 또는 내부 서브셋에서 선언되어야 합니다.이렇게 하면 문서 요소의 이름이 Docype 선언에 명시되어야 한다는 사실과 독자들의 검증을 위해 문서의 전체 내용 모델이 DTD로 정의되어야 한다는 사실과 같은 함축적인 의미로 가득 찬 판도라 상자가 열립니다.

XML 외부 엔티티를 포함 메커니즘으로 사용하는 것의 결함은 한동안 알려져 왔으며 실제로 1999년 마이크로소프트와 IBM에 의해 W3C에 XML 포함 제안서가 제출되었습니다.제안서는 범용 XML 포함 시설에 대한 처리 모델과 구문을 정의했습니다.

4년 후, XML Include 버전 1.0(Xinclude라고도 함)은 후보 권장 사항입니다. 즉, W3C는 광범위하게 검토되었으며 해결하기 위해 시작한 기본적인 기술 문제를 충족한다고 믿지만 아직 완전한 권장 사항은 아닙니다.

다양한 예제 구현을 제공하는 또 다른 좋은 사이트는 https://www.xml.com/pub/a/2002/07/31/xinclude.html 입니다.다음은 해당 사이트의 일반적인 사용 사례입니다.

<book xmlns:xi="http://www.w3.org/2001/XInclude">

  <title>The Wit and Wisdom of George W. Bush</title>

  <xi:include href="malapropisms.xml"/>

  <xi:include href="mispronunciations.xml"/>

  <xi:include href="madeupwords.xml"/>

</book>

이 기능을 XML 포함(Xinclude)이라고 합니다.몇 가지 예:

Mads Hansen의 솔루션은 좋지만 에서 외부 파일을 읽는 데 성공합니다.NET 4는 해결사에 대한 의견에서 힌트를 사용하여 확인하는 데 시간이 걸렸습니다.DTD 등등.

이렇게 합니다.

        XmlReaderSettings settings = new XmlReaderSettings();
        settings.DtdProcessing = DtdProcessing.Parse;
        XmlUrlResolver resolver = new XmlUrlResolver();
        resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
        settings.XmlResolver = resolver;
        var reader = XmlReader.Create("logfile.xml", settings);
        XmlDocument doc = new XmlDocument();
        doc.Load(reader);
        foreach (XmlElement element in doc.SelectNodes("//event"))
        {
            var ch = element.ChildNodes;
            var count = ch.Count;
        }

logfile.xml:

<?xml version="1.0"?>
<!DOCTYPE logfile [
<!ENTITY events    
 SYSTEM "events.txt">
]>
<logfile>
&events;
</logfile>

events.txt:

<event>
    <item1>item1</item1>
    <item2>item2</item2>
</event>

언급URL : https://stackoverflow.com/questions/5121052/can-we-import-xml-file-into-another-xml-file