标签: xml-attribute

XML:属性还是孩子?

在XSD,SOAP和其他XML约定中,您经常会看到以下内容:

<book>
 <title>Harry Potter</title>
 <author>J.K. Rowling</author>
</book>
Run Code Online (Sandbox Code Playgroud)

现在我想知道,属性发生了什么?对我而言,将其写为:

<book title="Harry Potter" author="J.K. Rowling" />
Run Code Online (Sandbox Code Playgroud)

但显然,出于某种原因,比我聪明的人选择了其他方式.有人可以解释为什么,那么属性是什么?

xml xsd xml-attribute

2
推荐指数
1
解决办法
2465
查看次数

WCF Web服务xml序列化[XmlAttributeAttribute()]被忽略

我有一个使用VS2010开发的WCF Web服务,目标是.Net Framework 4,它使用xsd.exe从xsd架构生成的序列化类.

当我从服务请求xsd时(http:// localhost:59120/Service1.svc?xsd = xsd2),将忽略元素属性.EG在下面的架构片段中 -

<xs:element name="id"...>
Run Code Online (Sandbox Code Playgroud)

应该是一个属性 -

<xs:attribute name="id"...>
Run Code Online (Sandbox Code Playgroud)

来自xsd请求的片段 -

...
<xs:sequence>
 <xs:element name="address" type="xs:string" nillable="true"/>
 <xs:element name="emailId" type="xs:string" nillable="true"/>
<xs:element name="id" type="xs:string" nillable="true"/>
 <xs:element name="items" type="tns:ArrayOfArrayOfOrdersCustomerItemsItem" nillable="true"/>
 <xs:element name="name" type="xs:string" nillable="true"/>
 </xs:sequence>
...
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我的类中的语句"[XmlAttributeAttribute()]"被忽略我已经尝试将其更改为[XmlAttribute()]和[XmlAttributeAttribute("Id")]并完全删除该行,但它没有区别所有.

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [XmlTypeAttribute(AnonymousType = true)]
    public partial class OrdersCustomer
    {

        /// <remarks/>
        [XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
        public string Name;

        /// <remarks/>
        [XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 1)]
        public string Address;

        /// …
Run Code Online (Sandbox Code Playgroud)

wcf xsd web-services xml-attribute

2
推荐指数
1
解决办法
2241
查看次数

在嵌套属性上使用XmlAttributeOverrides

我试图使用XmlAttributeOverrides来控制哪些类属性在序列化后显示在xml中。它适用于“根”类上的属性,但不适用于嵌套属性。这是一个简单的示例,以说明我要完成的工作。

我的班级层次结构如下:

public class Main
{
    public string Name { get; set; }
    public Location Address { get; set; }
}

public class Location
{
    public string StreetAddress { get; set; }
    public Contact ContactInfo{ get; set; }
}

public class Contact
{
    public string PhoneNumber { get; set; }
    public string EmailAddr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我序列化Main()时,我得到如下信息:

<Main>
    <Name></Name>
    <Address>
        <StreetAddress></StreetAddress>
        <ContactInfo>
            <PhoneNumber></PhoneNumber>
            <EmailAddr></EmailAddr>
        </ContactInfo>
    </Address>
</Main>
Run Code Online (Sandbox Code Playgroud)

我所能做的就是通过使用以下命令来避免显示名称或地址:

XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attribs = new XmlAttributes(); …
Run Code Online (Sandbox Code Playgroud)

c# class xml-attribute xmlserializer xmlignore

2
推荐指数
2
解决办法
8371
查看次数

在 SQL Server 查询中不使用节点名称读取 XML 节点属性

我将 XML 存储到数据库中,标签名称不同,但属性名称相同:

<book Category="Hobbies And Interests" PropertyName="C#" CategoryID="44" />
<sport Category="Hobbies And Interests" PropertyName="Cricket" CategoryID="46" />
Run Code Online (Sandbox Code Playgroud)

这只是两个示例,但标签名称可以是任何内容。我想从所有节点读取“PropertyName”属性。

是否可以?如果是,那么请任何人指导我。

xml sql-server xml-attribute

2
推荐指数
1
解决办法
9194
查看次数

如何在xsd中引用属性

我试图定义一个可以在后续元素定义中引用的属性.

<xs:attribute name="ridref" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)

后来我像这样使用它:

<xs:element name="coordRegRef">
  <xs:complexType>
    <!--xs:attribute name="ridref" type="xs:string"/ this works but I want to use ref -->
    <xs:attribute ref="ridref" use="required"/>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

XSD使用xmllint编译好

xmllint --schema pc-ar.xsd pc-ar.xml
Run Code Online (Sandbox Code Playgroud)

但是xmllint说

pc-ar.xml:41: element coordRegRef: Schemas validity error : Element '{http://pc-ar.xsd}coordRegRef', attribute 'ridref': The attribute 'ridref' is not allowed.
pc-ar.xml:41: element coordRegRef: Schemas validity error : Element '{http://pc-ar.xsd}coordRegRef': The attribute '{http://pc-ar.xsd}ridref' is required but missing.
Run Code Online (Sandbox Code Playgroud)

我解释为我的XML文件必须使用ridref的命名空间

<coordRegRef fix:ridref="111"/>
Run Code Online (Sandbox Code Playgroud)

(这确实有效,但不受欢迎)而不是

<coordRegRef ridref="111"/>
Run Code Online (Sandbox Code Playgroud)

为什么?

我的XSD

<?xml version="1.0"?>
<!-- validate: xmllint - -schema pc-ar.xsd …
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-namespaces xml-attribute xmllint

2
推荐指数
2
解决办法
3921
查看次数

如何检索属性为X或Y的XML元素?

考虑一下这个xml:

<parent>
    <child name="alpha" />
</parent>
Run Code Online (Sandbox Code Playgroud)

还有这个xml

<parent>
    <child name="beta" />
</parent>
Run Code Online (Sandbox Code Playgroud)

/ parent/child应该只有一个sinlge节点,其alpha或beeta为其名称值.

为了澄清......永远不会有2个子节点,每个节点都命名为alphabeta

我正在尝试创建一个单独的xpath查询,它将在这两种情况中返回name的值.

我试过这个......

/parent/child[@name='alpha' | @name='beta']/@name
Run Code Online (Sandbox Code Playgroud)

......但它不起作用.

我应该如何归还这个值..?

更新:我推荐了样本以确保它们形成良好,因为一个答案表明它们不是.

xml xpath xml-attribute

1
推荐指数
1
解决办法
161
查看次数

C#XML几次出现同一个元素

我目前正在阅读与序列化相关的序列化和C#属性(XmlRoot,XmlElement,XmlArray,...).

我想输出这样的东西:

<root>
    <a>...</a>
    <b>...</b>
    <c>...</c>
    <c>...</c>
    <c>...</c>
</root>
Run Code Online (Sandbox Code Playgroud)

(c元素多次出现)

但是如果c不将它们放在特定的"数组/列表节点"中,我就不会得到多个.

因为我真的不想那样:

<root>
    <a>...</a>
    <b>...</b>
    <cList>
        <c>...</c>
        <c>...</c>
        <c>...</c>
    </cList>
</root>
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

c# serialization xml-attribute

1
推荐指数
1
解决办法
426
查看次数

我在哪里将[XmlAttribute]属性放在c#中?

我通过提供相应的公共财产将一些公共领域改为私人.

例如:

public string Name;
Run Code Online (Sandbox Code Playgroud)

改变了

private string _name;
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud)

但是,原始公共字段的[XmlAttribute]属性呢?即

[XmlAttribute]
public string Name;
Run Code Online (Sandbox Code Playgroud)

变为:

[XmlAttribute]
private string _name;
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud)

要么

private string _name;
[XmlAttribute]
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud)

c# attributes xml-attribute

0
推荐指数
1
解决办法
603
查看次数

为什么Go的encoding/xml.Decoder.Token()不会产生xml.Attr标记呢?

使用encoding/xml.Decoder我试图手动解析从http://www.khronos.org/files/collada_schema_1_4加载的XML文件

出于测试目的,我只是迭代文档打印出遇到的任何令牌类型:

func Test (r io.Reader) {
    var t xml.Token
    var pa *xml.Attr
    var a xml.Attr
    var co xml.Comment
    var cd xml.CharData
    var se xml.StartElement
    var pi xml.ProcInst
    var ee xml.EndElement
    var is bool
    var xd = xml.NewDecoder(r)
    for i := 0; i < 24; i++ {
        if t, err = xd.Token(); (err == nil) && (t != nil) {
            if a, is = t.(xml.Attr); is { print("ATTR\t"); println(a.Name.Local) }
            if pa, is = t.(*xml.Attr); is { print("*ATTR\t"); …
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-attribute go xml-parsing

0
推荐指数
1
解决办法
2084
查看次数

是否有可能在Android中使用花哨的字体?

我知道TextView有一个属性被调用fontFamily,我认为你可以通过改变这个属性的值来改变文本的字体.所以我写道:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="my text"
    android:fontFamily="OCR A Std"
    android:textSize="20pt"/>
Run Code Online (Sandbox Code Playgroud)

然后我运行应用程序,但文本的字体仍然是普通的旧Arial字体.我认为必须有一种方法在android中使用花哨的字体,对吧?

如果我只是不能使用花哨的字体,什么字体(es)android支持?只有Arial是不可能的,对吧?

fonts android xml-attribute

0
推荐指数
1
解决办法
1091
查看次数

如何在C#中获取按属性名称过滤的XML节点的值?

这是我的 XML 文件的一部分

<summary>
  <testcase>  
    <result value="-45">100</result>
    <result value="0">200</result>
    <result value="45">300</result>
  </testcase>
  <testcase>    
    <result value="-45">1000</result>
    <result value="0">2000</result>
    <result value="45">3000</result>
  </testcase>  
 <testcase>    
    <result value="-45">0.1</result>
    <result value="0">0.2</result>
    <result value="45">0.3</result>
  </testcase>
</summary>
Run Code Online (Sandbox Code Playgroud)

我需要通过按属性名称过滤来获取元素值。

作为示例,我需要获取属性 = 45 的所有值,然后答案是 300,3000,0.3

XmlDocument doc = new XmlDocument();
doc.Load(_xmlFilePath);
XmlNodeList nodelist = doc.SelectNodes("//testcase");

for (int i = 0; i < nodelist.Count; i++)
{
    Double value;                        
    Double.TryParse(nodelist[i].SelectSingleNode("result").Attributes["45"].InnerText, out value);
    Console.WriteLine("value : " + value);
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码给出了以下错误消息。

你调用的对象是空的。

任何建议表示赞赏。

谢谢。

c# xml xmldocument xmlnode xml-attribute

0
推荐指数
1
解决办法
6304
查看次数