a few more xml things

This commit is contained in:
UbitUmarov
2018-01-05 12:24:07 +00:00
parent 0b96cd56fc
commit 89a690c11f
20 changed files with 91 additions and 33 deletions

View File

@@ -133,6 +133,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
{
using (XmlTextReader reader = new XmlTextReader(sr))
{
reader.DtdProcessing = DtdProcessing.Prohibit;
reader.XmlResolver = null;
reader.MoveToContent(); // skip possible xml declaration
if (reader.Name != "CoalescedObject")

View File

@@ -63,7 +63,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData);
using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null))
{
using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment }))
using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment, DtdProcessing = DtdProcessing.Prohibit, XmlResolver = null }))
{
try
{
@@ -267,18 +267,29 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
return null;
}
StringReader sr = new StringReader(parts[0].OuterXml);
XmlTextReader reader = new XmlTextReader(sr);
SceneObjectGroup sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader));
reader.Close();
sr.Close();
SceneObjectGroup sceneObject;
using(StringReader sr = new StringReader(parts[0].OuterXml))
{
using(XmlTextReader reader = new XmlTextReader(sr))
{
reader.DtdProcessing = DtdProcessing.Prohibit;
reader.XmlResolver = null;
sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader));
}
}
// Then deal with the rest
SceneObjectPart part;
for (int i = 1; i < parts.Count; i++)
{
sr = new StringReader(parts[i].OuterXml);
reader = new XmlTextReader(sr);
SceneObjectPart part = SceneObjectPart.FromXml(reader);
using(StringReader sr = new StringReader(parts[i].OuterXml))
{
using(XmlTextReader reader = new XmlTextReader(sr))
{
part = SceneObjectPart.FromXml(reader);
}
}
int originalLinkNum = part.LinkNum;
@@ -289,8 +300,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
if (originalLinkNum != 0)
part.LinkNum = originalLinkNum;
reader.Close();
sr.Close();
}
XmlNodeList keymotion = doc.GetElementsByTagName("KeyframeMotion");

View File

@@ -49,14 +49,19 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
public static void LoadPrimsFromXml(Scene scene, string fileName, bool newIDS, Vector3 loadOffset)
{
XmlDocument doc = new XmlDocument();
doc.XmlResolver=null;
XmlNode rootNode;
if (fileName.StartsWith("http:") || File.Exists(fileName))
{
XmlTextReader reader = new XmlTextReader(fileName);
reader.WhitespaceHandling = WhitespaceHandling.None;
doc.Load(reader);
reader.Close();
using(XmlTextReader reader = new XmlTextReader(fileName))
{
reader.WhitespaceHandling = WhitespaceHandling.None;
reader.DtdProcessing = DtdProcessing.Prohibit;
reader.XmlResolver = null;
doc.Load(reader);
}
rootNode = doc.FirstChild;
foreach (XmlNode aPrimNode in rootNode.ChildNodes)
{