안녕하세요, Oracle 데이터베이스에 varchar2로 저장된 xml 스크립트에서 innertext를 추출하는 데 문제가 있습니다. 가져 오는 동안 다음 형식으로 xml을 가져옵니다.
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SpecificAction xmlns=\"http://www.xyz.com/schemas/core/caut\">action to take</SpecificAction>"
다음 xml은 아래 코드를 사용하여 가져옵니다.
instance.cautDescription = records.GetStringOrDefault("SPEC_ACTION");
SPEC_ACTION 필드는 VARCHAR2 (4000 BYTE) 유형입니다.
데이터베이스의 xml에 \ 문자가 있기 때문에 태그로 내부 텍스트를 추출 할 수 없습니다. 내부 텍스트를 가져 오기 위해 다음 코드를 시도했습니다.
string s = instance.cautDescription;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(s);
XmlNode specificAction = xmlDoc.DocumentElement.SelectSingleNode("/SpecificAction");
string specific = specificAction.InnerText;
xmlString = specificAction.InnerText;
return xmlString;
내 코드가 null을 반환하는 경우이를 피할 수 있다면 어떤 지원이 정말 도움이 될 것입니다.
이것은 기본 네임 스페이스가있는 XML로 작업 할 때 발생하는 전형적인 문제입니다. XML에서 기본 네임 스페이스 (예 : 접두사가없는 네임 스페이스)가 있으면 접두사가 xmlns="...."
없는 모든 요소가 기본 네임 스페이스로 간주됩니다. 그러나 XPath에서 접두사가없는 모든 요소에는 네임 스페이스가 없습니다. 이 다른 패러다임을 연결하려면 기본 네임 스페이스 URI를 가리키는 접두사를 선언하고 XPath에서 사용해야합니다.
var nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
nsManager.AddNamespace("ns", xmlDoc.DocumentElement.NamespaceURI);
XmlNode specificAction = xmlDoc.DocumentElement.SelectSingleNode("/ns:SpecificAction", nsManager);
string specific = specificAction.InnerText;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다