-6

リクエスト: 助けられない、またはしたくない場合は、反対票を投じないでください。ありがとうございました。

この XAML の解析を手伝ってもらえますか?

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       EntryPointAssembly="Hello" EntryPointType="Hello.App" RuntimeVersion="4.7.50308.0">
  <Deployment.Parts>
    <AssemblyPart x:Name="Hello" Source="Hello.dll" />
  </Deployment.Parts>
</Deployment>

XmlDocument、XElement、および XamlReader を試しました。XAML を読み込んで値を取得することはできません。

更新 - 試したコード

     var appXaml = ... ; //the XAML string mentioned above

Xml ドキュメント:

     var x = new XmlDocument();
     x.LoadXml(appXaml);

また、

 //I created XSD from the XAML using xsd.exe
 //Placed it in "D:\AppManifest.xsd"
            var n = new XmlDocument();
            var ss = new XmlSchemaSet();
            var s = new XmlSchema() { SourceUri = @"D:\AppManifest.xsd" };
            ss.Add(s);
            ss.Compile();
            n.Schemas.Add(ss);
            n.LoadXml(appXaml);

XSD コード:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" targetNamespace="http://schemas.microsoft.com/client/2007/deployment" xmlns:mstns="http://schemas.microsoft.com/client/2007/deployment" xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:app1="http://schemas.microsoft.com/winfx/2006/xaml">
  <xs:element name="Deployment">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Deployment.Parts" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="AssemblyPart" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:attribute name="Name" msdata:Prefix="x" type="xs:string" />
                  <xs:attribute name="Source" form="unqualified" type="xs:string" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="EntryPointAssembly" form="unqualified" type="xs:string" />
      <xs:attribute name="EntryPointType" form="unqualified" type="xs:string" />
      <xs:attribute name="RuntimeVersion" form="unqualified" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Deployment" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

X要素:

     var z = XElement.Parse(appXaml);

XamlReader:

var l = XamlReader.Parse(appXaml);
4

2 に答える 2

1

ファイルから読み取った XAML コンテンツにBOMが含まれていることがわかりました。

I BOM が取り除かれ、XAML コードが解析可能になります。

Visual Studio 2010 を使用しています。デバッグ モードの「テキスト ビジュアライザー」では、BOM の兆候は見られませんでした (XAML 文字列は UTF8 です)。しかし、誤ってビジュアライザーからテキストをコピーして Notepad++ に貼り付けたところ、「?」が表示されました。記号 (この場合は BOM)

ああ。VSの奇妙な問題。

于 2013-08-05T13:11:05.290 に答える
1

xml を渡して解析してみてください。

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(@"D:\OldDesktop\Try\app.xaml");
        XElement.Parse(xmlDoc.InnerXml);

またはxmldocを繰り返します

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(@"D:\OldDesktop\Try\app.xaml");
        foreach (XmlElement xElement in xmlDoc.DocumentElement)
        {
           //do somthing
        }
于 2013-08-05T13:00:03.927 に答える