문제

LINQ에서 XML을 사용하여 표현식 트리에서 MathML 문서를 만들고 싶지만 MathMl XML 엔티티 (예 : ⁡ 및 & invisibletimes)를 사용하는 방법을 알 수 없습니다.

XElement xe = new XElement("mo", "&InvisibleTimes");

그것은 단지 앰퍼 샌드를 탈출합니다 (좋지 않습니다). 또한 xelement.parse를 사용하려고했습니다

XElement xe = new XElement.Parse("<mo>&InvisibleTimes</mo>");

그러나 System.xmlexception : 선언되지 않은 엔티티에 대한 참조 'Invisibletimes'에 대한 참조 엔티티를 어떻게 선언하거나 수표를 무시할 수 있습니까?

도움이 되었습니까?

해결책

다른 사람들이 지적했듯이 직접적인 방법은 없습니다.

즉, 해당 유니 코드 Caracther를 사용해 볼 수 있습니다. 에 따르면 http://www.w3.org/tr/mathml2/mmlalias.html, ApplyFunction의 경우 02061, 새로운 Xlement ( "Mo", " U02061")를 사용해보십시오.

다른 팁

에 따르면 이 스레드, LINQ에서 XML에는 엔티티 참조가 포함되어 있지 않습니다. 노드 유형이 없습니다. 파일을로드 할 때 확장하고 그 후에는 "정상적인"문자가 있습니다.

나는 모른다 XDocument, 그러나 당신은 그것을 할 수 있습니다 XmlDocument:

XmlDocument doc = new XmlDocument();
var entity = doc.CreateEntityReference("InvisibleTimes");
XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("xml"));
var el = root.AppendChild(doc.CreateElement("mo")).AppendChild(entity);
string s = doc.OuterXml;

'&'는 특별한 캐릭터이기 때문에 XML이 이름을 인코딩해야 할 수도 있습니다.

그래서 대신

XElement xe = new XElement("mo", "&InvisibleTimes");

노력하다

XElement xe = new XElement("mo", "&amp;InvisibleTimes");

정의하려면 DTD가 필요하다고 생각합니다u003Cmo> ⁢u003C/mo> .

Mathml 2.0은 XHTML + MATHML DTD를 제공합니다.

해결 방법은 다음과 같은 자리 표시자를 사용하는 것입니다. ;_amp_; XElement xe = new XElement("mo", ";_amp_;InvisibleTimes)XML 문자열을 얻을 때 복원하십시오.output = xe.ToString().Replace(";_amp_;", "&")

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