2

これらの xml-s の両方を解析できる必要があります。

<!-- Case 1 -->
<root xmlns="http://www.xml.namespace/111111">
    <dataObject id="Id1" name="Name1" xmlns="http://www.xml.namespace/222222" />
</root>

<!-- Case 2 -->
<root xmlns:myNs="http://www.xml.namespace/222222">
    <myNs:dataObject myNs:id="Id1" myNs:name="Name1" />
</root>

<dataObject>(via XmlSerializer) をこれを持つ C# モデル クラスに解析する必要があります。

[XmlAttribute(AttributeName = "id", Namespace="http://www.xml.namespace/222222")]
public string Id { get; set; }

しかし、それは に対してのみ機能しCase 2、 に対しては機能しませんCase 1。だから私はこのコード
で調べました:Case 1

var xmlString = @"<dataObject id=""Id1"" name=""Name1"" xmlns=""http://www.xml.namespace/222222"" />";
var xElement = XElement.Parse(xmlString);
var idAttribute = xElement.FirstAttribute;
Console.WriteLine(idAttribute.Name.Namespace); // ""
Console.WriteLine(xElement.Name.Namespace); // "http://www.xml.namespace/222222"

ここで、XElementは名前空間があると考えていますが、XAttributeは何も持っていないと考えています。
そのため、XAttributeはどういうわけか兄弟のxmlnsxml 名前空間宣言属性を認識していません。

これはバグですか、それとも何か間違っていますか?

4

1 に答える 1