XDocument에서 XML 네임스페이스 처리
네임스페이스가 포함된 XML 문서로 작업할 때 쿼리 요소가 null 값을 반환하는 경우가 발생할 수 있습니다. 이는 XML 네임스페이스가 제대로 처리되지 않을 때 발생할 수 있습니다.
다음 XML 조각을 고려하세요.
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> <EventID>589828</EventID> <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}"><!--Value to be extracted--> <VirtualPath>/Service.svc</VirtualPath> </Correlation> </System> </E2ETraceEvent>
Correlation 요소를 쿼리하고 해당 ActivityID를 추출하려고 시도하는 다음 코드가 있다고 가정합니다. 속성 값:
XDocument xDoc = XDocument.Parse(xmlString); XElement xEl1 = xDoc.Element("E2ETraceEvent"); XElement xEl2 = xEl1.Element("System"); XElement xEl3 = xEl2.Element("Correlation"); // NullPointerException can occur here XAttribute xAtt1 = xEl3.Attribute("ActivityID"); String sValue = xAtt1.Value;
네임스페이스를 처리하지 않고 이 코드를 실행하면 xEl3에 대한 null 참조가 반환됩니다. Element() 메소드는 네임스페이스를 고려하지 않고 이름과 일치하는 요소를 찾습니다. 이 문제를 해결하려면 네임스페이스를 쿼리에 통합해야 합니다.
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System"); XElement xEl3 = xEl2.Element(nsSys + "Correlation"); XAttribute xAtt1 = xEl3.Attribute("ActivityID"); String sValue = xAtt1.Value;
XNamespace 클래스를 사용하여 네임스페이스를 표시하면 Element() 메서드가 네임스페이스 내의 요소를 올바르게 식별할 수 있습니다. 이 예에서 nsSys는 System 요소의 네임스페이스를 나타냅니다.
요약하자면, 네임스페이스가 포함된 XML 문서를 처리할 때 요소를 쿼리하는 동안 null 참조를 방지하려면 네임스페이스를 올바르게 처리하는 것이 중요합니다. XNamespace 클래스를 사용하고 이를 Element() 메서드에 통합하면 요소와 해당 속성에 정확하게 액세스할 수 있습니다.
위 내용은 네임스페이스를 사용하여 XML 요소를 쿼리할 때 NullPointerException을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!