первым я хотел бы показать вам, как мой полученный XML выглядит следующим образом:Создание XDocument с XNamespaces
<env:Envelope xmlns:env="http://www.sap.com/SBO/DIS">
<env:Body>
<dis:ExecuteSQLResponse xmlns:dis="http://www.sap.com/SBO/DIS">
<BOM>
<BO>
<AdmInfo>
<Object>oRecordset</Object>
</AdmInfo>
<Table />
</BO>
</BOM>
</ExecuteSQLResponse>
</env:Body>
</env:Envelope>
Как это должно выглядеть следующим образом:
<env:Envelope xmlns:env="http://www.sap.com/SBO/DIS">
<env:Body>
<ExecuteSQLResponse xmlns="http://www.sap.com/SBO/DIS">
<BOM>
<BO>
<AdmInfo>
<Object>oRecordset</Object>
</AdmInfo>
<Table />
</BO>
</BOM>
</ExecuteSQLResponse>
</env:Body>
</env:Envelope>
Я использую следующий код для создания XML:
resXml.Add(New XElement(env + "Envelope",
New XAttribute(XNamespace.Xmlns + "env", env.NamespaceName),
New XElement(env + "Body",
New XElement(dis + "ExecuteSQLResponse",
New XAttribute(XNamespace.Xmlns + "dis", dis.NamespaceName),
New XElement("BOM",
New XElement("BO",
New XElement("AdmInfo",
New XElement("Object", "oRecordset")),
New XElement("Table")))))))
это некоторые vb.net кода, но должны быть одинаковыми в C#
моя проблема - это «dis: ExecuteSQLResponse» после попытки и попытки, я не могу понять, как я могу удалить «dis» перед ExecuteSQLResponse. Я имею в виду пространства имен хорошо .. он должен просто выглядеть следующим образом: «ExecuteSQLResponse Xmlns =» http://www.sap.com/SBO/DIS «» без «Диса»
моего определения XNamespace :
Dim env As XNamespace = XNamespace.Get("http://www.w3.org/2003/05/soap-envelope")
Dim dis As XNamespace = XNamespace.Get("http://www.sap.com/SBO/DIS")
Почему вы считаете, что приставка имеет значение? Это не (или, по крайней мере, не должно). –
Это зависит от того, как программа обрабатывает XML и не получает мой XML, как мне это нужно, я должен внести огромные изменения в бизнес-логику (да, может быть, не самый чистый и лучший BL) – darkdog
Если программа заботится о префиксе, то он ужасно разбит. XML работает не так. Возможно ли это, если вместо манипуляции с XML манипулировать строкой? Не имеет значения, является ли префикс «dis» или «abc» или пустым. –