디버깅하는 동안 새로 만든 요소의 접두사는 w :이지만 끝 부분의 Xmldoc에서는 잃게됩니다.Open XML - 내 접두사는 어디에 있습니까?
아래의 요소에 대한 결과 InnerXML은 다음과 같습니다 <altChunk id="FF_HTML" xmlns="http://schemas.openxmlformats.org/wordprocessingml/2006/main" />
예상 결과는 접두사 네임 스페이스 만의 별칭입니다 <w:altChunk r:id="FF_HTML"/>
private static XmlDocument prepareHTMLChunks(PackagePart partDocumentXML)
{
XmlDocument doc = new XmlDocument();
Stream xmlStream = partDocumentXML.GetStream();
doc.Load(xmlStream);
NameTable nt = new NameTable();
nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
XmlNodeList nodeList = doc.SelectNodes("//w:bookmarkStart", nsManager);
foreach (XmlNode node in nodeList)
{
foreach (XmlAttribute attr in node.Attributes)
{
if (attr.Value.EndsWith("HTML"))
{
//XmlElement el = doc.CreateElement("w","w:altChunk",string.Empty);
XmlElement el = doc.CreateElement("altChunk",nsManager.LookupNamespace("w"));
XmlAttribute altChunkAttr = doc.CreateAttribute("r","id",string.Empty);
altChunkAttr.Prefix = "r";
altChunkAttr.Value = attr.Value;
el.SetAttributeNode(altChunkAttr);
XmlNode nodeToReplace = node.ParentNode;
XmlNode bodyNode = doc.SelectSingleNode("//w:body", nsManager);
bodyNode.ReplaceChild(el, nodeToReplace);
}
}
}
return doc;
}
당신은 가서 올바른로 자신의 대답을 받아 들일 수 있습니다. –